首先我得到$(窗口).height()和这个高度我想要与scroll的特定值进行比较。
$(window).scroll(function (event) {
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
console.log("window height---> " +windowHeight);
console.log("scroll value----> "+scroll);
if (scroll == windowHeight) {
console.log("---after compare--- ");
}
});
但是当我比较滚动值时,有时滚动值会跳过一些值。
我的滚动值(在控制台中):
1.scroll value----> 423
1.window height---> 431
2.scroll value----> 427
2.window height---> 431
3.scroll value----> 432
3.window height---> 431
4.scroll value----> 434
4.window height---> 431
5.scroll value----> 436
5.window height---> 431
如果您注意到第二次比较:
2.scroll value ----> 427个
2.窗口高度---> 431
滚动值和窗口高度不同。滚动值直接从 2.scroll值---->跳转427 到 滚动值----> 432 即可。并跳过滚动的431值。如何比较精确的滚动值和窗口高度。
答案 0 :(得分:1)
这个想法是跟踪用户是否滚动到某个点并对#34;事件"做出反应。
var wasOnfirstPage = true; // scroll < height
$(window).scroll(function (event) {
var scroll = $(window).scrollTop();
var windowHeight = $(window).height();
var isOnFirstPage = scroll < windowHeight; // current state
if (wasOnFirstPage && !isOnFirstPage) {
console.log("user scrolled fully past first page");
}
else if (!wasOnFirstPage && isOnFirstPage) {
console.log("user scrolled back up");
}
wasOnFirstPage = isOnFirstPage;
});
这样,不仅值不会超过一个像素,还会检测滚动的方向。
答案 1 :(得分:0)
1. 旧滚动值----&gt; 423
1.窗口高度---&gt; 431
2. 新滚动值----&gt; 427
2.窗口高度---&gt; 431
你不能,因为它取决于用户滚动的速度(即页面应该滚动多少行文字)。
但是,您可以跟踪滚动的最后一个值,并检查窗口的高度是否在滚动的最后一个值和新值之间。希望它有所帮助
答案 2 :(得分:0)
下面:
if (scroll == windowHeight) {
console.log("---after compare--- ");
}
您依赖的浏览器会在每个滚动的像素上触发scroll
事件
实际上,由于性能原因,这是不可能的(如果我将1000像素滚动到页面底部,请考虑代码的速度有多慢)
这很像比较浮点数。您需要一些常量来确定所考虑的内容&#34;等于&#34;:
var deltaScroll = 15 ;
if (scroll > windowHeight - deltaScroll && scroll < windowHeight + deltaScroll) {
console.log("---after compare--- ");
}
为了获得更好的效果,您可以将deltaScroll
基于windowHeight,例如5%:
var deltaScroll = windowHeight / 20
(尝试不同的值来找到最好的值)