animate() 更新速度不够快
animate() not updating fast enough
我正在制作一个保留在页面顶部的导航栏。当用户向下滚动时,此栏将缩小,当用户返回到页面顶部时,导航栏将返回到其原始尺寸。
问题:当用户向下滚动时,导航栏会按预期收缩。但是,如果用户快速滚动回页面顶部,导航栏将保持收缩状态,并且 scrollTop()
回调函数中的 animate()
函数会在几秒钟后触发。
为了调试它,我包含了console.log($(window).scrollTop());
,告诉我用户在页面上的当前位置。我获得console.log
输出的速度与用户滚动一样快。但 {console.log('animated');
应该在动画完成后触发,直到几秒钟后才会出现console.log($(window).scrollTop());
输出0
。
如何在用户向上滚动时让animate()
快速响应?
JS代码
var navBar = $('#navbar-inner');
var top = navBar.css('top');
$(window).scroll(function() {
console.log($(window).scrollTop());
if($(this).scrollTop() > 50) {
navBar.animate({'marginTop':'-20', 'height':'60'}, 300);
} else {
navBar.animate({'marginTop':'0', 'height':'80'}, 300, function()
{console.log('animated');});
}
});
(发布我的评论作为答案)
使用 .stop()
在开始新动画之前停止任何正在进行的动画。
我以前遇到过这种动画比用户操作持续时间更长的问题。你只需要停止动画,比如
navBar.stop(true, true).animate(...);
为了更好地理解 stop(),这里是链接 http://api.jquery.com/stop/。希望对你有帮助
相关文章:
- Wacom stu-430签名捕获速度太慢
- 如何在速度模板中获取LiferayPortlet实例id
- 我想放慢html中进程栏的速度
- Knockout绑定大量数据的速度较慢
- Wordpress:未捕获引用错误:未定义速度
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- Css优化谷歌页面速度洞察
- fullcalendar在删除导致浏览器挂起的多个事件时速度较慢
- 录制速度javascript
- Javascript图像数组预加载速度和从内存中删除
- 谷歌地图多边形减慢浏览器速度
- nodejs/ccurlhttp请求与postlerrest客户端相比速度较慢
- 从Three.js场景中删除许多对象的速度较慢
- 构建多个图表时,HighCharts加载数据的速度较慢
- jQuery.length()速度含义
- Javascript滑块是't装载速度不够快
- angularjs 子指令 DOM 加载速度不够快
- animate() 更新速度不够快
- 打开选择之前的事件.(单击工作速度不够快)
- Ipad 3和Iphone 4s的速度不够快