Javascript scrollTop获取每个像素
当我使用函数scrollTop获取顶部的像素量时,我收到1、4、20、,。。。取决于我滚动的速度Javascript scrollTop获取每个像素,javascript,pixel,scrolltop,Javascript,Pixel,Scrolltop,当我使用函数scrollTop获取顶部的像素量时,我收到1、4、20、,。。。取决于我滚动的速度 $(window).scroll(function(){ var position = $(document).scrollTop(); console.log(position); )}; 我正在建立一个网站,我需要得到每个像素。这是因为我正在检查某个位置值何时显示。例如: if(position === 1200){ // do something } 现在,对于我收
$(window).scroll(function(){
var position = $(document).scrollTop();
console.log(position);
)};
我正在建立一个网站,我需要得到每个像素。这是因为我正在检查某个位置值何时显示。例如:
if(position === 1200){
// do something
}
现在,对于我收到的scrollTop函数的值,这是不可能的。现在我正在使用下面的代码,这使得计算每个像素成为可能,但这只是在网站不高的情况下才能顺利工作。如果站点的高度超过3000px,它将开始抖动,因为计算像素需要时间
var viewportFirstPosition = $(document).scrollTop();
$(window).scroll(function(){
var inc;
var viewportHeight = $(window).height();
var viewportNewPosition = $(document).scrollTop();
if(viewportNewPosition > viewportFirstPosition){
inc=1;
}
else{
inc=-1;
}
while(viewportFirstPosition !== viewportNewPosition){
viewportFirstPosition += inc;
console.log(viewportFirstPosition); // 1, 2, 3, 4, 5, ...
}
}
有什么办法可以让我改变吗?没有抖动:)
谢谢 您无法获取每个像素的
scrollTop()
,这是因为该函数需要几毫秒才能工作并返回值(取决于运行该函数的机器),如果您高速滚动,则无法检查所有像素
我建议您将控制声明更改为:
if (position >= 1200){
// do something
}
精确获得1200像素的位置几乎是不可能的
即使你有最好的电脑能够检测到每个像素,但在速度较慢的设备上,它永远不会工作,因此唯一的解决方案是检查1200像素左右或超过1200像素,但不一定是1200像素。不要完全相等,试着使用间隔。你不能。人们滚动的速度比逐像素快。为什么不使用
offset()
?