簡體   English   中英

粘滯div平滑滾動

[英]Smooth scrolling with sticky div

我想創建一個像本例一樣平滑的粘性div: http ://www.nytimes.com/interactive/2010/11/13/weekinreview/deficits-graphic.html?src=tp&_r =0

現在,我的例子一點都不順利,但確實令人震驚。 我有這個JS代碼:

$(window).scroll(function () {

        var scroll_top = $(this).scrollTop();
           if (scroll_top > 66) {//height of header
             $('.wrapper').addClass('sticky');
          } else {
          $('.wrapper').removeClass('sticky');
          }
   });

和HTML:

<div class="wrapper">
     <h4>Ausgaben in Millionen Franken</h4>
     <div class="background">
          <div id="kunstmuseum"></div><div id="historisch"></div><div id="naturhist"></div><div id="kulturen"></div><div id="antik"></div><div id="beyeler"></div><div id="weitereMuseen"></div><div id="theaterBasel"></div><div id="kaserne"></div><div id="weitereTheater"></div><div id="sinfonie"></div><div id="jazz"></div><div id="rock"></div><div id="literatur"></div><div id="erbe"></div><div id="wettbewerb"></div><div id="weiteres"></div><div id="zoo"></div>
    </div>
    <div id="eins">0</div>
    <div id="zwei">30</div>
    <div id="drei">60</div>
    <div id="vier">90</div>
    <div id="fuenf">120</div>
    <div id="eingespart"><h4>Total eingespart:&ensp;<div id="totalSum">0&ensp;CHF</div></h4></div>
</div>

這是jsfiddle: http : //jsfiddle.net/w640ftLf/3/

好像您是在將sticky類附加到錯誤的元素上。 試試這個,代替:

$(window).scroll(function () {
    var scroll_top = $(document).scrollTop();
    if (scroll_top > 66) {//height of header
        $('.background').addClass('sticky');
     } else {
        $('.background').removeClass('sticky');
     }
});

另外,對於教育,您可以看一下您的榜樣是如何做到的

這不是我真正要做的,但是您的功能可以正常工作。

解決問題的最簡單方法是添加padding-top: 66px; (66為標題高度)同時添加到類'sticky'到body元素。

讓我知道這是否適合您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM