与Safari有一个奇怪的CSS图像问题,并且无法在任何地方找到任何有关此在线的信息.
每件首饰都有一个小缩略图.如果有更多的缩略图可以容纳在那个空间中,我设置JS让它们通过调整外部div的左边缘来回滑动(很像smoothdivscroll,但不是那么复杂).
在Safari中由于某种原因,小缩略图库中的第一个图像保持静态,而其他图像在其上滚动.看起来很废话.我无法理解为什么.它可能是Safari中的一个错误吗?
我觉得这是一个CSS问题,因为在添加这个滑动功能之前,我们只限制了5个图像,并且它们会在Safari中加载重叠和失真……
http://jeandousset.com/jewellery/engagement-rings/
示例HTML:
- <div class="span12 offset6 product-images-container" style="margin-left: 140px;">
- <div class="product-zoom-container">
- <img id="eva-main-image" class="main-image" src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-round-cut-diamond-front.jpg" data-post-id="530" title="eva-engagement-ring-cushion-cut-diamond-angle-" alt="">
- </div>
- <div id="eva-gallery" class="product-gallery text-center">
- <div class="scroll-products-right"></div>
- <div class="scroll-products-left"></div>
- <div class="scrollable-area">
- <div class="product-gallery-inner" style="width: 420px; margin-left: -30px;">
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-angle-.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-angle-.jpg" title="eva-engagement-ring-cushion-cut-diamond-angle-" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-under.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-under.jpg" title="eva-engagement-ring-cushion-cut-diamond-under" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-angle.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-angle.jpg" title="eva-engagement-ring-cushion-cut-diamond-angle" alt=""></a>
- <a href="#" class="product-thumbnail active" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-round-cut-diamond-front.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-round-cut-diamond-front.jpg" title="eva-engagement-ring-round-cut-diamond-front" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-turned-profile.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-cushion-cut-diamond-turned-profile.jpg" title="eva-engagement-ring-cushion-cut-diamond-turned-profile" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" title="eva-engagement-ring-asscher-cut-diamond-angle" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" title="eva-engagement-ring-asscher-cut-diamond-angle" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" title="eva-engagement-ring-asscher-cut-diamond-angle" alt="">
- </a>
- <a href="#" class="product-thumbnail" data-image="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" data-post-id="530">
- <img src="http://doussetwp.loc/wp-content/uploads/2013/07/eva-engagement-ring-asscher-cut-diamond-angle.jpg" title="eva-engagement-ring-asscher-cut-diamond-angle" alt="">
- </a>
- </div>
- </div>
- </div>
CSS:
- .product-gallery {
- *zoom: 1;
- max-height: 70px;
- position: relative;
- margin-left: auto;
- margin-right: auto;
- }
- .product-gallery:before,.product-gallery:after {
- display: table;
- content: "";
- line-height: 0;
- }
- .product-gallery:after {
- clear: both
- }
- .product-gallery .scrollable-area {
- overflow: hidden;
- position: relative;
- margin-left: auto;
- margin-right: auto;
- width: 85%;
- }
- .product-gallery .scroll-products-right,.product-gallery .scroll-products-left {
- position: absolute;
- width: 30px;
- height: 100%;
- background: url(./../img/arrow-small-left.png) center center no-repeat #fff;
- background-color: rgba(255,255,0.6);
- top: 0;
- left: 0;
- z-index: 20;
- opacity: .6;
- filter: alpha(opacity=60);
- }
- .product-gallery .scroll-products-right:hover,.product-gallery .scroll-products-left:hover {
- cursor: pointer !important;
- background-color: rgba(255,0.8);
- opacity: 1;
- filter: alpha(opacity=100);
- }
- .product-gallery .scroll-products-right {
- right: 0;
- left: auto;
- background: url(./../img/arrow-small-right.png) center center no-repeat #fff;
- background-color: rgba(255,0.6);
- }
- .product-gallery .product-thumbnail {
- float: left;
- max-width: 70px;
- opacity: .5;
- filter: alpha(opacity=50);
- }
- .product-gallery .product-thumbnail.active {
- opacity: 1;
- filter: alpha(opacity=100);
- }
- .product-gallery .product-thumbnail:before,.product-gallery .product-thumbnail:after {
- content: ""
- }
JS:
- Dousset.product = {
- currentWindowWidthMin: null,currentInterval: null,init: function () {
- $('#wrapper').on('click','.product-thumbnail',Dousset.product.thumbClicked);
- // $('.product-thumbnail').css({
- // 'float': 'none',// 'display': 'inline-block'
- // });
- $('#wrapper').on('mousedown','.scroll-products-right',Dousset.product.scrollThumbsLeft);
- $('#wrapper').on('mousedown','.scroll-products-left',Dousset.product.scrollThumbsRight);
- $('#wrapper').on('mouseup','.scroll-products-left,.scroll-products-right',function(e){
- clearTimeout(Dousset.product.currentInterval);
- Dousset.product.currentInterval = null;
- });
- if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) {
- $('#wrapper').on('click',Dousset.product.scrollThumbsLeftBatch);
- $('#wrapper').on('click',Dousset.product.scrollThumbsRightBatch);
- }
- Dousset.product.setCurrentWindowWidthMin();
- $(window).resize(Dousset.product.windowResized);
- },thumbClicked: function (e) {
- e.preventDefault();
- if (!$(this).hasClass('active')) {
- var postId = $(this).data('post-id');
- var newImg = $(this).data('image');
- $('.main-image[data-post-id="'+postId+'"]').attr('src',newImg);
- $('.product-thumbnail[data-post-id="'+postId+'"]').removeClass('active');
- $(this).addClass('active');
- }
- },scrollThumbsLeft: function (e) {
- var $inner = $(this).siblings('.scrollable-area').find('.product-gallery-inner');
- var maxMargin = $inner.width() - $(this).siblings('.scrollable-area').width();
- Dousset.product.currentInterval = setInterval(function(){
- if (parseInt($inner.css('margin-left'),10) >= -maxMargin) {
- $inner.css({
- 'margin-left' : '-=1'
- });
- }
- },10);
- },scrollThumbsRight: function (e) {
- var $inner = $(this).siblings('.scrollable-area').find('.product-gallery-inner');
- Dousset.product.currentInterval = setInterval(function(){
- if (parseInt($inner.css('margin-left'),10) <= 0 ) {
- $inner.css({
- 'margin-left' : '+=1'
- });
- }
- },scrollThumbsLeftBatch: function (e) {
- var $inner = $(this).siblings('.scrollable-area').find('.product-gallery-inner');
- var maxMargin = $inner.width() - $(this).siblings('.scrollable-area').width();
- if (parseInt($inner.css('margin-left'),10) >= -maxMargin) {
- $inner.animate({
- 'margin-left' : '-=70'
- });
- }
- },scrollThumbsRightBatch: function (e) {
- var $inner = $(this).siblings('.scrollable-area').find('.product-gallery-inner');
- if (parseInt($inner.css('margin-left'),10) <= 0 ) {
- $inner.animate({
- 'margin-left' : '+=70'
- });
- }
- },setCurrentWindowWidthMin: function () {
- Dousset.product.currentWindowWidthMin = $( window ).width() > 979 ? 980 : $( window ).width() > 767 ? 768 : 480;
- },windowResized: function () {
- var oldWinMin = Dousset.product.currentWindowWidthMin;
- Dousset.product.setCurrentWindowWidthMin();
- }
- }
- $(document).ready(function(){
- Dousset.product.init();
- });