如何计算调用$('#el'').scrollTop(1)遍历div高度759的次数?

问题描述 投票:1回答:1

我需要计算滚动div的水平和垂直滚动条所需的缩放值,以便当水平滚动完全横过div的宽度时,垂直滚动也完全横过同一div的高度。

[我现在首先通过手动计算jQuery函数$( '#div' ).scrollLeft( ++x )的调用次数,以及分别计算$( '#div' ).scrollTop( ++y )函数的调用数,其中x和y的值从0开始,然后递增每个呼叫1个,分别需要在div的宽度和高度上滚动。在我的情况下,div的宽度为[[540 px,高为[[759 px),并且需要342次才能覆盖宽度,而660为高度。据此,我可以计算出要放入div的垂直滚动功能调用$( '#div' ).scrollTop( ++y * yScale )的y缩放比例值为660/342。问题是div的宽度和高度并不总是相同,因此对于滚动div需要显示的所有可能的内容,我无法将y缩放值使用预先计算的值。

为什么x和y增量为1像素,对于我的具体情况,每个滚动调用的数量不是540和759,而不是342和660?

[尝试自动执行计算之前,我尝试使用以0开头的参数值多次调用scrollTop函数,并在每次后续调用中以1像素递增(0,1,2,... 10,11, ..,20等),我发现每个滚动调用的滚动量不一致。

我加入这个是因为由于不一致,我发现我不能依靠几个滚动调用的平均滚动量来计算遍历每个div轴方向的整个距离所需的调用总数。

我可以使用一个循环来自动执行此操作,该循环可以计算每个维度的重复调用次数,当相应的滚动条停止滚动时停止为每个方向计数,而当两个滚动条停止滚动时都停止循环,但是我宁愿不必这样做如果有一种纯粹的数学方法来计算缩放值,则使用此方法。此外,对于div而言,每次加载时div内容都会跳来跳去,这对用户来说似乎很奇怪,特别是对于较大的内容并降低显示速度。

有人知道该怎么做吗?

谢谢。

javascript html function scale vertical-scrolling
1个回答
0
投票
然后每个动画循环运行以下内容以重新计算currentScrollX和currentScrollY

var speed = 20; // adjust accordingly // Home into destination currentScrollX += (destinationScrollX - currentScrollX) / speed; currentScrollY += (destinationScrollY - currentScrollY) / speed;

要结束滚动,只需执行类似操作

if (Math.abs(destinationScrollX - currentScrollX) < 0.05 && Math.abs(destinationScrollY - currentScrollY) < 0.05) {
  currentScrollX = destinationScrollX;
  currentScrollY = destinationScrollY;
  // stop scrolling flag / code goes here
}

// At this point set scrollTop(currentScrollY) and scrollLeft(currentScrollX)
© www.soinside.com 2019 - 2024. All rights reserved.