2013-12-11 245 views
2

我想滚动彩色div当我的页面滚动(或当mousewheel)从顶部到达特定距离。在Mozilla中它的作品,但在铬和在即我有一个坏的影响,当格 “spostamento” 是repositioned.Can你帮我解决这个问题?谢谢元素div水平滚动

Link jsfiddle

的Html

<div class="tutto" style="width:100%;position:relative;"> 
<div class="spostamento" style="position:absolute;width:100%;"> 
    <div style="width:100%;height:300px;background-color:#000000;"> 
    </div> 
    <div class="enter" style="height:200px;width:100%;position:relative;overflow:hidden;"> 
     <div class="fascia" style="height:200px;"> 
      <div class="sposta" style="position:absolute;width:100%;left:0px;top:0px;height:200px;"> 
       <div class="first" style="position:absolute;left:0px;height:200px;width:300px;background-color:#0F3"></div> 
       <div style="position:absolute;left:300px;height:200px;width:300px;background-color:#069"></div> 
       <div style="position:absolute;left:600px;height:200px;width:300px;background-color:#C09"></div> 
       <div style="position:absolute;left:900px;height:200px;width:300px;background-color:#6C6"></div> 
       <div style="position:absolute;left:1200px;height:200px;width:300px;background-color:#00F"></div> 
       <div style="position:absolute;left:1500px;height:200px;width:300px;background-color:#0F3"></div> 
       <div style="position:absolute;left:1800px;height:200px;width:300px;background-color:#6C6"></div> 
       <div style="position:absolute;left:2100px;height:200px;width:300px;background-color:#069"></div> 
       <div style="position:absolute;left:2400px;height:200px;width:300px;background-color:#C09"></div> 
       <div style="position:absolute;left:2700px;height:200px;width:300px;background-color:#6C6"></div> 
       <div style="position:absolute;left:3000px;height:200px;width:300px;background-color:#00F"></div> 
       <div style="position:absolute;left:3300px;height:200px;width:300px;background-color:#6C6"></div> 
       <div style="position:absolute;left:3600px;height:200px;width:300px;background-color:#069"></div> 
       <div style="position:absolute;left:3900px;height:200px;width:300px;background-color:#C09"></div> 
       <div style="position:absolute;left:4200px;height:200px;width:300px;background-color:#6C6"></div> 
       <div class="last" style="position:absolute;left:4500px;height:200px;width:300px;background-color:#0F3"></div> 
      </div> 
     </div> 
    </div> 
    <div style="width:100%;height:1000px;background-color:#000000;"></div> 
</div> 
</div> 

脚本

$(document).ready(function(){ 
     var left=0; 
     var lastScroll = 0; 
     var dimensioneSpostamento=0; 
     var distanzaFascia=$(".fascia").offset().top-200; 
     $(".sposta > div").each(function(){ 
      dimensioneSpostamento +=$(this).width(); 
     }); 
     var dimensioneEffettiva=dimensioneSpostamento-$(window).width(); 
     $(".tutto").height(dimensioneEffettiva+300+1000); 
     $(window).scroll(function (event) { 
      var st = $(this).scrollTop(); 
      if(st>distanzaFascia&&st<dimensioneEffettiva){ 
        $(".spostamento").css("top",st-distanzaFascia); 
        left +=st-lastScroll; 
        if (st > lastScroll) { 
         $(".sposta").css("left", -left);     
        } 
        else { 
         $(".sposta").css("left", -left); 
        } 
       lastScroll = st; 
      } 
     }); 
    }); 
+0

谢谢!我更正了我的文章 –

+0

在附注中,[Scrollpath](http://joelb.me/scrollpath/)是这类事物的一个很好的插件 –

回答

0

我认为Firefox和Chrome之间的区别是,Chrome的滚动100px的一次为每个鼠标线轮蜱和Firefox浏览器在默认情况下启用平滑滚动,这会导致滚动了几像素多次为一个鼠标轮蜱。

它会导致您的示例中出现问题,因为您在st低于distanzaFascia时未将$(".spostamento").css("top")设置回原始值。你也可以在Firefox中获得同样的效果。但它更轻。

请尝试以下操作。我认为它应该做的伎俩:

if (st <= distanzaFascia) { 
    $(".spostamento").css("top", 0); 
    $(".sposta").css("left", 0); 
} 

这里是你的更新JSFiddle