JavaScript:当用户滚动时对滚动进行动画处理
javascript: animate scrolling when user scrolls
我想在用户滚动时以增量方式将页面滚动到页面的不同部分。所以我写了这段代码:
var $window = $(window);
var sectionHeight = $window.height();
var animating = false;
var dir;
// initialize page position (0)
var pagePos = $(window).scrollTop();
$(window).scroll(function() {
// current page position
var st = $(this).scrollTop();
// whether to animate up or down
dir = ((st > pagePos) ? '+=' : '-=');
// animate
if (animating == false) {
animating = true;
$('html, body').stop().animate({scrollTop: dir+sectionHeight},500, function() {
pagePos = $(window).scrollTop();
animating = false;
});
}
});
问题是,在初始动画下来之后,我得到了一个链接动画,它将页面动画化回顶部。我不确定为什么,因为除非"动画"设置为 false,否则它不应该动画。只有在动画完成时,它才会被设置回 false...右?
一个潜在的解决方法,虽然我相信有人可以想出更好的解决方案,但在滚动后将其禁用一段时间。
相关代码:
var ct = new Date().getTime();
if (animating == false && new Date().getTime() > ct + 10)
这仅允许动画在至少 11 毫秒后发生。似乎适用于低至 2 的值。您并没有真正注意到滚动有任何滞后,但同样,我不认为这是一个理想的解决方案。
演示
我能够让它工作,我仍然不知道为什么它不能像编码的那样工作,但这是对我有用的解决方案 - 我受到@sachleen的回答的启发。谢谢萨克琳。
我将滚动动画移动到一个单独的函数中,然后在对动画函数的回调中,我使用与动画持续时间相同的 setTimeout 来调用另一个函数,该函数只是将"动画"布尔值更改回 false。
相关文章:
- 滚动动画代码不起作用
- CSS滚动动画赢得'不要在django跑步
- 我想要一个类似于网站 https://onlycoin.com/ 的jQuery鼠标滚动动画效果
- 如何在没有外部插件的情况下在jQuery中制作一个滚动动画
- 使用鼠标滚轮控制页面滚动动画
- Jquery 代码不适用于页面上的滚动动画
- 滚动动画无法正常工作;当我单击链接时,我被定向但没有动画
- JQuery 页面滚动动画仅适用于镶边
- 滚动动画会断开页面上的链接
- 为什么这个滚动动画不起作用
- 从某些ID中排除滚动动画功能
- 导航栏特定的 jQuery 滚动动画
- 使用 jQuery 和 ScrollMagic 滚动动画时间轴
- 如何使用jQuery在移动网络浏览器上设置滚动动画
- 如何制作水平/垂直滚动动画
- 如何停止滚动动画
- 在单个页面上的各个部分之间滚动动画?(仅限javascript)
- 滚动动画的jQuery错误无法解释
- 随时间平滑滚动动画距离
- 在使滚动动画不触发滚动事件时遇到问题