【问题标题】:jQuery position DIV fixed on scrolljQuery位置DIV固定在滚动上
【发布时间】:2015-05-04 20:58:53
【问题描述】:

我试图将一个元素固定在顶部,当该元素触摸窗口顶部时,当用户向下滚动时。 向下滚动时一切正常(添加了一个具有固定位置的类),但是当我向上滚动时不起作用。 但我不明白为什么:( 我用这段代码创建了一个 jsfiddle:http://jsfiddle.net/8h4knr9r/

$(window).scroll(function () {
     var distance = $('#navigation-sections').offset().top;

     if ($(window).scrollTop() >= $('#navigation-sections').offset().top) {
         $('#navigation-sections').addClass("affix");

     } else {
         $('#navigation-sections').removeClass("affix");
     }
 });

谢谢

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    您需要将初始距离存储在滚动功能之外 - 否则它 每次滚动都会重新计算。这是工作小提琴:http://jsfiddle.net/donal/8h4knr9r/5/

    JS 应该是这样的:

    var distance = $('#navigation-sections').offset().top; 
    
    $(window).scroll(function () {
    
         if ($(window).scrollTop() >= distance) {
             $('#navigation-sections').addClass("affix");
    
         } else {
             $('#navigation-sections').removeClass("affix");
         }
     });
    

    【讨论】:

    • 谢谢。我注意到在平板电脑和移动设备上的性能非常缓慢。只有当滚动完成时,固定位置才会改变。我怎样才能变得更好?可能吗?谢谢
    • 试试gesturechange事件。见这里:stackoverflow.com/a/17195346/379855
    猜你喜欢
    • 2013-12-04
    • 2012-12-14
    • 2013-04-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    相关资源
    最近更新 更多