指向示例的链接: 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: 0
能够在window
的{{1}}处正常工作。
答案 0 :(得分:2)
scrollTop
函数返回内容向下滚动的像素数,即窗口上方有多少像素。
滚动时,您不会为滚动内容的每个像素获取事件。如果使用==
运算符检查偏移量,则大多数时候都会错过它。使用>
运算符可确保元素在顶部移出顶部窗口后立即固定。
如果您将scrollTop
的值与零进行比较,那么只有向下滚动,然后向上滚动到顶部才会生效。
答案 1 :(得分:0)
这是因为当窗口滚动超出分区标记时,它会在视口上添加一个类来修复它。