【问题标题】:Making Jquery.ScrollTo work based on speed instead of duration使 Jquery.ScrollTo 基于速度而不是持续时间工作
【发布时间】:2011-03-16 05:48:29
【问题描述】:
我正在创建一个使用来自 Jquery.ScrollTo 插件的 $.Localscroll 子级的水平站点(它也可以是任何其他自动滚动站点,例如对角线)。
这个插件有一个大问题;它根据持续时间计算运动。这意味着从第 1 页到第 2 页的转换需要 2 秒,但从第 1 页到第 10 页的转换也需要 2 秒,因此转换速度非常快,转换本身不再可见。我不知道会有多少链接,链接不会在同一个菜单中,而是分散在页面中。
有没有办法找出当前的滚动位置(最好通过插件,这样它是跨浏览器的)并使用哈希(#)找出新的滚动值,然后根据速度计算持续时间?
【问题讨论】:
标签:
javascript
jquery
scroll
scrollto
horizontal-scrolling
【解决方案1】:
您可以说明在一段时间内应该移动多少像素。在本例中为 50px/10ms。
例如:
var scrollOffset = root.scrollTop,
offset = element.offsetTop,
speed = 50;
function scrollLoop() {
if (offset >= scrollOffset) {
return;
}
scrollOffset -= speed;
root.animate({ scrollTop: scrollOffset }, 10, function() {
scrollLoop();
});
}
【解决方案2】:
您可以使用$("element").scrollTop() 获取 scrollTop 值。你可以做一些计算并根据它设置时间长度。