HTML:
1 <div class="top"> 2 ·····內容 3 </div> 4 <div class="scroll"></div> 5 <div class="bottom"> 6 ·······內容 7 </div>
CSS:
1 .sfixed{ 2 position:fixed; 3 top:0px; 4 left:0px; 5 z-index:10; 6 } 7 .scroll{ 8 ······樣式 9 }
Jq:
1 <script> 2 3 var top1=$(".scroll").offset().top; 4 5 $(window).scroll(function(){ 6 7 var win_top=$(this).scrollTop(); 8 9 var top=$(".scroll").offset().top; 10 11 if(win_top>=top){ 12 13 $(".scroll").addClass("sfixed"); 14 15 }//如果此處用else判斷來remove sfixed這個類的話是不行的,因為當加上這個類的時候,".scroll"這個元素fixed的top值是0,獲取到的offset.top就相當於是當前滾動條的滾動的距離,win_top與top值就一直相等了,這樣會導致抖動;只有與以前的距離做比較才能實現滑上去的時候能回到原來的位置。 16 17 if(win_top<top1){ 18 19 $(".scroll").removeClass("sfixed"); 20 21 } 22 23 }) 24 25 </script>
效果:與最初的top值比較:

不與最初的top值比較,直接else:

思路:滑下來的時候,如果此時滾動條到頂部的距離大於最初那個div到頂部的距離的時候就讓這個div固定定位;
滑上去的時候,如果此時滾動條到頂部的距離比原來div到頂部的距離的時候就去掉固定定位的屬性。
