1

网站:http ://www.laederach.com/chde/sortiment.html 浏览器:OS X Lion 上的 Safari 6

在这里,您在页面中心有一个可滚动的内容。它在除 OS X 上的 Safari 之外的所有 Web 浏览器中都能完美运行。不知何故,当向左或向右滚动时,Safari 更新背景的速度不够快,并产生了白色伪影(主体背景为白色)。

如何阻止 Safari 移动页面背景?Chrome 做得对。

这就是神奇的代码:

    /*Slider at SortimentArea*/
function initSlider(){
     //$('#sortimentScrollbar').tinyscrollbar({ axis: 'x', size: 953 });
    //Scroll Drag
    var dragLimit = 1270;
    var scrollbarWidth = 945;
    var scrollbarThumbWith;
    var thumbPos;
    var thumbPosSave;
    thumbPos = $('.thumb').css("left");
    //thumbPosSave = $('.thumb').data('savePoint', thumbPos);

    //Calc size of scrollbar  
    if(scrollbarWidth > $('#sortimentScrollbar .overview').width()){
      $('.scrollbar .thumb').width(scrollbarWidth);  
    }else{
      $('.scrollbar .thumb').width( dragLimit * scrollbarWidth/$('#sortimentScrollbar .overview').width());     
      $('.thumb').css("left", 40);
    }  

  scrollbarThumbWidth = $('.scrollbar .thumb').width();

  //howAllImageInstant;


  //Set positions for scrollbar and sortiment if coming back from productpage
  setOldScrollbarAndSortimentPosition();
  if (($('.scrollbar .thumb').css("left").replace('px','')- -1*($('.scrollbar .thumb').css("width").replace('px',''))) > $('.scrollbar').css("width").replace('px',''))
    {
      //alert("bigger");
    }
    //Prevent Links from firing on move
    $('#sortimentScrollbar .overview a').click(function(){
      if($('#sortimentScrollbar .overview').data('down')){
        return false;
      }
  });

    //Set up the Moving Pane
    $('#sortimentScrollbar .overview').mousedown(function(event){
      event.preventDefault();
      $(this)
        .data('down', true)
        .data('x', event.clientX)
        .data('left', -1*$(this).position().left);
      return false;
    }).mouseup(function(event){
      event.preventDefault();
      $(this)
        .data('down', false);
    }).mousemove(function(event){      
      event.preventDefault();
      if($(this).data('down') == true){
        var pos = $(this).data('left') + $(this).data('x') - event.clientX;
        if(pos <= $(this).width()-dragLimit && pos >= 0){
          $(this).css('left', -1*(pos));
          $('.scrollbar .thumb').css('left', (scrollbarWidth/$('#sortimentScrollbar .overview').width())*pos);  
      savePositionsOfScrollingElements();
        }
      }
    }).mouseleave(function(event){
      $(this)
        .data('down', false);
    })

    .bind("touchstart", function(event){
      event.preventDefault();
      $(this)
        .data('down', true)
        .data('x', event.pageX)
        .data('left', -1*$(this).position().left);
      return false;
    }).bind('touchend', function(event){
      event.preventDefault();
      $(this)
        .data('down', false);
    }).bind('touchmove', function(event){
      event.preventDefault();
      if($(this).data('down') == true){
        var pos = $(this).data('left') + $(this).data('x') - event.pageX;
        if(pos <= $(this).width()-dragLimit && pos >= 0){
          $(this).css('left', -1*(pos));
          $('.scrollbar .thumb').css('left', (scrollbarWidth/$('#sortimentScrollbar .overview').width())*pos);          
          savePositionsOfScrollingElements();
        }
      }
    });

  //Set up the Scrollbar
  $(".scrollbar").click(function(event){
    window.setScrollbarViaClick = true;
    var x = event.pageX - $(this).offset().left;
    var windowWidth = $(window).width();
    var leftValueCorrention = 0;
  if (window.isSlide != true)
  {
    $newThumbLeftValue = 0
    if ((x-(leftValueCorrention +($(".thumb").css("width").replace('px','')/2))) < 0)
      {
      $newThumbLeftValue = 0;
      //$(".thumb").css("left",0);
        }
      else if((x-(leftValueCorrention +($(".thumb").css("width").replace('px','')/2)))-(-1*$(".thumb").css("width").replace('px','')) > $(".scrollbar").css("width").replace('px',''))
      {
      $newThumbLeftValue = $(".scrollbar").css("width").replace('px','')-$(".thumb").css("width").replace('px','')-10;
        //$(".thumb").css("left",$(".scrollbar").css("width").replace('px','')-$(".thumb").css("width").replace('px','')-10);
      }
      else
      {
      $newThumbLeftValue = x-(leftValueCorrention +($(".thumb").css("width").replace('px','')/2));
      //$(".thumb").css("left",x-(485+($(".thumb").css("width").replace('px','')/2)));   
     }
     $(".thumb").animate({
      left: $newThumbLeftValue
    }, 200, function(){});

    $newOverviewLeft = -1*($(".overview").css("width").replace('px','')/$(".scrollbar").css("width").replace('px','')*$newThumbLeftValue);
    $(".overview").animate({
      left: $newOverviewLeft
    }, 200, function(){savePositionsOfScrollingElements()});
    $(".overview").css("left",$newOverviewLeft);
    // $(".overview").css("left",-1*($(".overview").css("width").replace('px','')/$(".scrollbar").css("width").replace('px','')*$(".thumb").css("left").replace('px','')));
  }
    window.isSlide = false;
  });

  $('.scrollbar .thumb').mousedown(function(event){
    window.isSlide = true;
      event.preventDefault();
      $(this)
        .data('down', true)
        .data('x', event.clientX)
        .data('left', -1*$(this).position().left);
      return false;
    }).bind('touchstart', function(event){
      event.preventDefault();
      $(this)
        .data('down', true)
        .data('x', event.pageX)
        .data('left', -1*$(this).position().left);
      return false;
    }).bind('touchend', function(event){
      event.preventDefault();
      $('.scrollbar .thumb').data('down', false);
    }).bind('touchmove', function(event){
      event.preventDefault();
      if($('.scrollbar .thumb').data('down') == true){
        var posBar = -1*($('.scrollbar .thumb').data('left') + $('.scrollbar .thumb').data('x') - event.pageX);
        if(posBar <= scrollbarWidth-scrollbarThumbWidth && posBar >= 0){
          $('.scrollbar .thumb').css('left', posBar);
          var visPos = -1*(($('#sortimentScrollbar .overview').width()*posBar)/scrollbarWidth);
          $('#sortimentScrollbar .overview').css('left', visPos);
      savePositionsOfScrollingElements();
        }
      }
  });

    $('#bgDiv').mouseup(function(event){
      $('.scrollbar .thumb').data('down', false);
    }).mousemove(function(event){
      event.preventDefault();
      if($('.scrollbar .thumb').data('down') == true){
        var posBar = -1*($('.scrollbar .thumb').data('left') + $('.scrollbar .thumb').data('x') - event.clientX);
        if(posBar <= scrollbarWidth-scrollbarThumbWidth && posBar >= 0){
          $('.scrollbar .thumb').css('left', posBar);
          var visPos = -1*(($('#sortimentScrollbar .overview').width()*posBar)/scrollbarWidth);
          $('#sortimentScrollbar .overview').css('left', visPos);          
      savePositionsOfScrollingElements();
        }
      }
    });

  }

你最好检查一下页面上的 html,这对这里来说太多了。

谢谢大家

我目前无法回答我的问题,但我偶然发现了问题。请参阅下面的评论。

4

2 回答 2

0

试试这个:

background-position:fixed;
于 2012-11-05T10:28:59.380 回答
0

问题是我用来修复 Chrome 错误的 -webkit-transform 导致有时不显示图像。这个“黑客”已经使用-webkit-transform: scale(1);

禁用此 CSS 属性可修复 Safari 中的问题,该问题无论如何都不需要此 hack。

于 2012-11-06T08:52:23.863 回答