【发布时间】:2016-09-15 00:37:28
【问题描述】:
当您滚动 10 像素时,我有一个向右滑动 100 像素的框,如果滚动小于 10 像素,则滑回默认位置。盒子确实有动画,但是,它有一点延迟。谁能帮我解决这个问题?
HTML
<div id="nest">
<div id="box">
</div>
</div>
CSS
#nest {
width: 95%;
max-width: 1000px;
margin: auto;
background-color: orange;
height: 1000px;
padding-top: 150px
}
#box {
margin: 50px 0px 0px 0px;
width: 100px;
height: 100px;
position:relative;
background-color: green;
}
jQuery
jQuery(window).scroll(function() {
if (jQuery(this).scrollTop() > 10) {
jQuery('#box').animate({left:'100px'})
} else {
jQuery('#box').animate({left:'0px'})
}
});
我的 JSFIDDLE 链接 https://jsfiddle.net/ispykenny/m6ffj83g/1/
提前感谢您的时间和帮助!
【问题讨论】:
-
.scrollTop()设置滚动顶部。要获取它,请使用不带括号的.scrollTop -
因为滚动事件处理程序被触发了很多次,并且每次它都会将一个新动画放入队列中。使用超时去抖动滚动事件可能是一种解决方法或出列 fx 队列jsfiddle.net/m6ffj83g/2
-
尝试在滚动事件上添加一个设置超时,否则它会检查每 1px 滚动
-
感谢大家的帮助!
-
这是一个完美的去抖场景:去抖可以像 setTimeout/clearTimeout 一样简单。这是一个使用标志(而不是 clearTimeout)的类似问题:stackoverflow.com/questions/20141933/debounce-mouse-wheel
标签: javascript jquery html css