Jquery 如何补偿具有不同偏移的动画的速度?
这是我的代码:Jquery 如何补偿具有不同偏移的动画的速度?,jquery,animation,math,Jquery,Animation,Math,这是我的代码: $('.element').click(function () { var offsetTop = $('.destination').offset().top; $('html,body').stop(true, false).animate({ scrollTop: offsetTop }, 800); }); 我在网页的不同(垂直)位置触发此代码。 由于偏移更改,到目标的速度不同(单击顶部的次数越多,动画速度越快) 您将如何补偿此动画?在每个垂直/偏移值上
$('.element').click(function () {
var offsetTop = $('.destination').offset().top;
$('html,body').stop(true, false).animate({ scrollTop: offsetTop }, 800);
});
我在网页的不同(垂直)位置触发此代码。
由于偏移更改,到目标的速度不同(单击顶部的次数越多,动画速度越快)
您将如何补偿此动画?在每个垂直/偏移值上具有相同的速度
这里有一个例子:
点击1,注意滚动速度。然后单击8,看看它有多慢。您必须根据
偏移量动态计算动画的速度
$('.element').click(function () {
var offsetTop = $(this).offset().top,
destinationTop = $('.destination').offset().top,
speed = ((destinationTop - offsetTop) / $(window).height()) * 800;
// Speed calculation according to the distance to cover
$('html,body').stop(true, false).animate({
scrollTop: destinationTop
}, speed);
});
演示:
这将以相同的速度从页面上的任何位置滚动到顶部。单击应用此动画并停止上一个动画如果没有示例,很难准确理解您的意思。如果我真的明白你的意思,那么,因为速度是距离和时间的乘积,你需要缩短距离或增加动画时间。好的,例子来了……添加一个例子,检查问题的底部;)我知道速度是距离和时间的乘积,但它们不是线性增长的。所以如果时间是800,偏移量是400和8000,速度不是线性的,使用400*800和8000*800…不确定你是否明白我的意思。检查我发布的示例。在你的情况下,速度总是相同的值,我想这应该会改变。。。