如何在使用position: fixed
元素按下鼠标按钮时逐渐向下滚动视口?在mousedown上逐渐滚动,直到mouseup
4
A
回答
2
在这里你可以jQuery.animate()结合setTimeout()和clearTimeout()做到这一点:
$('.button').on('mousedown', function() {
console.log('Start Animate');
(function smoothSrcroll() {
console.log(Math.max($('html').scrollTop(), $('body').scrollTop()));
$('html, body').stop().animate({
scrollTop: Math.max($('html').scrollTop(), $('body').scrollTop()) + 100
}, 1000, 'linear', function() {
window.timeout = setTimeout(smoothSrcroll(), 0);
});
})();
}).on('mouseup', function() {
console.log('Stop Animate');
$('html, body').stop();
clearTimeout(window.timeout);
});
我针对$('html, body')
,这样它会在Firefox和Chrome浏览器。这有点棘手,因为animate()
实际上运行两次,因为两个选择器。为了解决这个问题,我使用了jQuery.stop()。由于Firefox可以使用$('html').scrollTop()
而Chrome使用$('body').scrollTop()
,我使用Math.max()来计算增量。该功能在完成时自行执行,并在释放鼠标时使用clearTimeout()
和jQuery.stop()
。
+0
工程很好,谢谢!有没有办法让它更平滑些? –
+0
@ScottHunter在默认的jQuery库中增加了一些补充脚本。实际上只有3种设置:线性,摆动和默认设置。您可以找到创建更平滑过渡的脚本。 – Daerik
相关问题
- 1. 如何连续滚动开始mousedown直到mouseup?
- 2. Internet Explorer 11:在滚动条上触发的MouseUp-MouseDown
- 3. 滚动按钮逐渐向下滚动
- 4. 在mouseup上停止滚动
- 5. 在滚动div逐渐淡出淡出
- 6. 滚动div直到mousedown上的最后一个div
- 7. MouseDown事件直到MouseUp时才会传递,当拖动源存在时
- 8. JQuery如何显示,隐藏像滚动mousedown()和mouseup()
- 9. javascript如何在mousedown上不断移动元素并停止在mouseup上移动
- 10. jQuery在mousedown上的平滑滚动
- 11. 在mousedown上更改div图像并在mouseup上还原
- 12. 在jQuery中既有mousedown/mouseup也有dblclick
- 13. mouseup在mousedown后未被触发
- 14. mousedown上的Webkit滚动条错误
- 15. jquery在几个图像上添加mouseup和mousedown事件
- 16. mousedown和mouseup绑定和解除mousedown处理程序
- 17. HTML5画布:如何处理mousedown mouseup mouseclick
- 18. JavaScript mousedown和mouseup事件冲突
- 19. 诺基亚地图(v2.2):mousedown/mouseup问题
- 20. Control.Leave触发MouseDown,而不是MouseUp
- 21. MouseDown/MouseLeftButtonDown事件不会触发,MouseUp是?
- 22. 逐渐改变基于滚动的背景颜色
- 23. WPF - 上的MouseDown弹出菜单,然后用的MouseUp
- 24. C#手动触发的MouseDown无法触发MouseUp
- 25. NSTextView逐行滚动
- 26. 渐进滚动angularjs
- 27. ProgressBar在启动画面上不会逐渐显示进度
- 28. 停止滚动直到滚动
- 29. 大图像在Chrome中缓慢涂漆,逐渐从上到下
- 30. MySQL逐渐衰减......?
滚动时,鼠标光标不会脱离它们按住的元素吗?如果你的意思是“点击”而不是持有,那么检查一下:[Javascript平滑滚动而不使用jQuery](https://stackoverflow.com/questions/10063380/javascript-smooth-scroll-without-the-use -jquery)或[this](https://www.sitepoint.com/smooth-scrolling-vanilla-javascript/) –
谢谢,但它会是一个固定的元素,他们按住 –