使用粘性div平滑滚动

时间:2014-12-09 20:05:07

标签: javascript jquery html css

我想在此示例中创建一个平滑的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/

2 个答案:

答案 0 :(得分:0)

看起来你正在将sticky类附加到错误的元素上。试试这个,而不是:

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

此外,对于教育,您可以查看how your example is doing it

答案 1 :(得分:0)

我真的不怎么做,但你的功能很好。

解决问题的最简单方法是在添加类“粘性”的同时将padding-top: 66px;(66为标题高度)添加到body元素。

请告诉我这是否适合您。