Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript scrollTop获取每个像素_Javascript_Pixel_Scrolltop - Fatal编程技术网

Javascript scrollTop获取每个像素

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 } 现在,对于我收

当我使用函数scrollTop获取顶部的像素量时,我收到1、4、20、,。。。取决于我滚动的速度

$(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()