当我使用函数scrollTop来获取顶部的像素数量时,我会收到1,4或20,...取决于我滚动的速度。
$(window).scroll(function(){
var position = $(document).scrollTop();
console.log(position);
)};
我正在构建一个网站,我需要获得每个像素。这是因为我正在检查何时显示某个位置值。例如:
if(position === 1200){
// do something
}
现在,我收到的scrollTop函数值无法实现。现在我使用下面的代码可以计算每个像素,但这只能在网站不高时才能正常工作。如果该站点的高度超过3000px,它将开始抖动,因为它需要lang来计算像素。
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, ...
}
}
我怎么能以不同的方式做到这一点?没有抖动:) 谢谢!
答案 0 :(得分:1)
你不能获取每个像素的scrollTop()
,这是因为该函数需要几毫秒才能工作并返回值(取决于它运行的机器),如果你滚动高速时,它将无法检查所有像素。
我建议您将控制语句更改为:
if (position >= 1200){
// do something
}
获取正好1200像素的位置几乎是不可能的。
即使您拥有能够检测每个像素的最佳PC,在较慢的设备上也无法工作,因此唯一的解决方案是检查大约1200px 或大于1200px < / em>,但正好是1200px 。