2013-08-07 157 views
1

我有一個元素位置移動滾動事件的問題。問題: 我正在向上滾動頁面並將1px添加到CSS頂部值(每個滾動條)。在此之後,我將頁面向下滾動,並從CSS頂部值中移除1px。我認爲它會恢復原來的位置,但不會。這裏是我的代碼:元素移動jquery滾動

var lastScroll = $(window).scrollTop(); 

$(window).scroll(function(env) { 

var scroll = $(this).scrollTop(); 

if (scroll > lastScroll){ 
    console.log('Scroll down'); 
    $('#home>article').css({ 
     top: "+="+1+"px" 
    });             
} else { 
    console.log('Scroll up'); 
    $('#home>article').css({ 
     top: "-="+1+"px" 
}); 

lastScroll = scroll; 

}); 

謝謝你的想法!

+0

如果你想開發這樣的東西:http://everylastdrop.co.uk/,我可以推薦你skrollr:https://github.com/Prinzhorn/skrollr – lukassteiner

回答

0

當滾動事件觸發時,它是而不是保證每滾動一個像素點火一次。一次滾動10個像素,下一個滾動2個像素後,它可能會閃光。您必須跟蹤上次調用處理程序時的scrollTop delta(更改)。

1

希望這可能有幫助,這是我前一段時間使用的。 我一直在使用:

<script type="text/javascript">// <![CDATA[ 
$(window).scroll(function() { 
      var ttop = $('.container').position().top; 
      var hcltb = $('.container').height(); 
      var mtop = $(window).scrollTop(); 
      if (mtop > ttop) { 
       if (mtop < (ttop + hcltb - 400)) { 
        $('.internal_prev').css('top', (mtop - ttop + 300)); 
        $('.internal_next').css('top', (mtop - ttop + 300)); 
        $('.internal_commands').css('top', (mtop - ttop + 300)); 
       } 
      } 
     }); 
// ]]></script> 

這將導致DIV CLASS =「容器」充當主容器。 然後它會導致internal_ *類在div內部上下滾動,設置內部填充爲400.

它不是完美的,但在這裏你去。