jQuery动画问题由于滚动重新启动的功能
jQuery animation issues due to scrolling restarting the function
当用户向下滚动时,我遇到了一个导航条滑动的问题。我的代码可以工作——但是如果你一直滚动(上下滚动,或者非常快速地向下滚动),这个工具条的移动速度真的很慢,而不是它应该达到的速度。我认为这是因为即使在动画进行到一半的时候,函数也会重新开始,所以它必须移动一半的距离,但保持相同的时间,就好像它必须移动整个距离一样。我发现了几种可能性,但它们都清除了动画队列,我不能这样做,如果我在动画完成之前滚动到顶部,导航栏仍然是可见的,即使它不应该。所以基本上我想要导航条平滑滑动,即使我一直向下滚动,但需要有一些东西阻止我滚动到顶部,而导航条仍然可见。由于
JSFiddle:
http://jsfiddle.net/bhaZ6/8/我代码:jQuery(document).ready(function() {
var offset = 220;
var duration = 500;
jQuery(window).scroll(function() {
if (jQuery(this).scrollTop() > offset) {
jQuery('#nav').stop(true).animate({'top': '0'}, duration, 'linear');
} else {
jQuery('#nav').stop(true).animate({'top': '-72px'}, duration, 'linear');
}
});
});
由于动画只需要运行一次,我创建了一个名为position的变量,该变量限制"向下动画"运行多次,直到"向上动画"被调用,反之亦然。感谢adeno的想法
jQuery(document).ready(function() {
var offset = 220;
var duration = 300;
var position = 'up';
jQuery(window).scroll(function() {
if (jQuery(this).scrollTop() > offset && position === 'up') {
jQuery('#nav').stop(true).animate({'top': '0'}, duration, 'linear');
position = 'down';
} else if (jQuery(this).scrollTop() < offset && position === 'down'){
jQuery('#nav').stop(true).animate({'top': '-72px'}, duration, 'linear');
position = 'up';
} else {
return;
}
});
});
相关文章:
- 当我在重新启动cordova应用程序后尝试添加更多数据时,lokijs会丢失数据库和收集中的数据
- 重新启动jquery脚本后,角度停止工作
- Chrome内容脚本制作cookie;chrome重新启动时,cookie会被删除.如何使其稳定
- preventDefault之后的重新启动事件
- WebStorm,使用Node Supervisor(因此不必在每次代码更改后重新启动)
- 重新启动游戏jQuery功能不工作
- Web服务器意外退出,正在重新启动新实例
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 重新启动画布 JavaScript
- 事件侦听器,用于完全关闭后重新启动的应用程序
- Skrollr.js在向上滚动时启动另一个动画
- Node SocketIO以编程方式强制在损坏的套接字上重新启动
- 服务器重新启动后javascript不工作
- 当滚动到指定的位置时,启动功能,如何重置它并重新启动,如果我们再次回到这个位置
- Gulp Concat+Browsesync重新启动
- 在 javaScript 中重新启动 setInterval
- 如何为Sails.js创建启动/停止/重新启动Linux服务
- 如何暂停和重新启动jquery数据表插件
- jQuery动画问题由于滚动重新启动的功能
- Javascript图像滚动,如何保持滚动而不重新启动