以下代码用于检测用户是否已滚动到页面底部并且有效。
if($(window).scrollTop() == $(document).height() - $(window).height()){
//do something
}
问题:
我不明白为什么从文档的高度减去窗口的高度,然后将其与滚动高度进行比较以确定是否已到达页面的底部。为什么不简单
if($(window).scrollTop() == $(document).height()){
//do something
}
或
if($(window).scrollTop() == $(window).height()){
//do something
}
答案 0 :(得分:13)
这是因为$(window).scrollTop()
返回页面顶部的位置,$(document).height()
返回页面底部的位置。因此,您需要减去窗口的高度以获得要比较的位置,因为如果您完全滚动到底部,这将为您提供页面顶部的位置。
答案 1 :(得分:3)
$(window).scrollTop()
是窗口的 top 相对于文档的位置。在我正在查看的页面上,如果我滚动到最底部,那就是1385
。 $(document).height()
是整个页面的高度(1991
对我而言)。 $(window).height()是窗口(视口)的高度(606
对我来说)。这意味着视口顶部的位置加上窗口的高度是视口的 bottom 的位置。 1385 + 606 = 1991
。
答案 2 :(得分:0)
scrollTop
值永远不会高于文档高度值。这意味着您滚动浏览文档,使其全部在窗口之外。
将scrollTop
与窗口高度进行比较只意味着您向下滚动了一个屏幕,而不是向文档的底部滚动。
从文档高度减去窗口高度,当窗口底部位于文档底部时,会为scrollTop
提供值。