我刚刚开始学习javascript和jQuery,我对窗口对象$(window)
有疑问。我有这个代码,当它滚动到顶部时,它会在屏幕顶部显示一个div。
$(function () {
$(window).scroll(function(){
var window_top = $(window).scrollTop();
var div_top = $("#sticky-anchor").offset().top;
if (window_top > div_top) {
$('#sticky').addClass('stick');
} else {
$('#sticky').removeClass('stick');
}
});
});
我不明白的是,如果整个屏幕是窗口,那么window_top> div_top?
答案 0 :(得分:1)
top属性返回当前窗口的最顶层浏览器窗口。
top
在您处理框架和处理其他网页打开的窗口时非常有用。
红色的地方将始终被视为top
!如果您滚动页面,在 RED区域中页面的哪一部分,该部分现在位于window.top
。
因此,如果您的
DIV
高于top
,则window_top > div_top
会返回true
否则部分会被执行!
答案 1 :(得分:1)
感谢大家帮我解决问题。在做了几个console.log()之后,试图找出代码背后的逻辑。我弄清楚了。当页面加载且没有滚动时,var window_top = $(window).scrollTop();
最初为0。当页面滚动时,值会增加。 var div_top = $("#sticky-anchor").offset().top;
的初始值是从<div id="sticky">
到顶部的高度。当粘性div偏移顶部时,语句if (window_top > div_top)
返回true。