0

问题:

示例链接:http: //jsfiddle.net/j65yQ/

/* First: */
/* Set the Position of the Division Tag to Fixed When Reaching the Top of the Window While Scrolling */
            
$(window).scroll(function(){ 

    var u_div_cn = $('div#container_nav');
    var u_os_top_read = $('div#container_nav').offset().top;
    
    if ($(window).scrollTop() > u_os_top_read) {      
    u_div_cn.addClass('set_position');};

});

滚动时会得到resulting value哪个?.scrollTop()

上面示例中的division tag确实将其位置属性设置为固定,conditional if statement当它到达顶部时window

然而,为什么在这个例子中“大于” .offset().top有效,而“等于” zero却在多次尝试后无效?

作为“等于”的示例:

$(window).scroll(function(){    

    var u_div_cn = $('div#container_nav');
    var u_div_cn_os_top = $('div#container_nav').scrollTop();
    
 
    if ( u_div_cn_os_top ==  0 ) {      
        u_div_cn.addClass('set_position');
    };

});

我问的原因是,因为我想到了equals to在.top: 0window

4

2 回答 2

2

scrollTop函数返回内容向下滚动了多少像素,即窗口上方有多少像素。

滚动时,您不会收到滚动内容的每个像素的事件。如果使用==算子检查偏移量,大部分时间都会错过。使用>操作符可确保元素在其顶部移出顶部窗口时立即固定。

如果将值从scrollTop零进行比较,则只有向下滚动然后向上滚动到顶部时才会如此。

于 2012-12-16T04:27:47.463 回答
0

这是因为当窗口滚动到分区标签之外时,它会添加一个类来修复视口上的问题。

于 2012-12-16T04:25:52.230 回答