【发布时间】:2020-11-22 21:02:17
【问题描述】:
如何像在 Twitter Web 桌面站点上那样实现滚动?在那里,可以使用鼠标滚轮从页面上的任何位置滚动中心列,即使定位在固定元素上,或者在中心列之外单击。
为了澄清,我正在寻找这种从屏幕上任意位置滚动特定元素的能力,而不是如何进行无限滚动。
分析 Twitter 使用的代码可能需要一些时间...
【问题讨论】:
标签: javascript twitter scroll
如何像在 Twitter Web 桌面站点上那样实现滚动?在那里,可以使用鼠标滚轮从页面上的任何位置滚动中心列,即使定位在固定元素上,或者在中心列之外单击。
为了澄清,我正在寻找这种从屏幕上任意位置滚动特定元素的能力,而不是如何进行无限滚动。
分析 Twitter 使用的代码可能需要一些时间...
【问题讨论】:
标签: javascript twitter scroll
所以这是一个类似于 Twitter 页面的情况:
<html>
<body>
<div id="scrollThis" style="height: 100px; width: 400px; overflow-y: auto;">
<h1>Test</h1>
<h1>Test</h1>
<h1>Test</h1>
<h1>Test</h1>
<h1>Test</h1>
<h1>Test</h1>
</div>
</body>
</html>
<script>
document.addEventListener("wheel", function(event) {
factor = event.deltaMode === 1 ? 16 : 1;
delta = factor * event.deltaY || -event.wheelDelta || event.detail;
document.getElementById("scrollThis").scrollTop = document.getElementById("scrollThis").scrollTop + delta
});
</script>
这段代码所做的只是向整个文档添加一个轮子监听器。移交的事件拥有一个 int deltaY。这是一个整数,表示您向上或向下滚动多少像素(在我的情况下为 +57 或 -57)。所以基本上我将此 int 添加到应该向下滚动的 div 的 scrollTop 中,然后它可以工作:)
希望能帮到你
最好的问候
塞巴斯蒂安
【讨论】:
scrollTop+(event.deltaY*18) 来近似您的示例。这完美地工作,但这不能成为解决方案。需要更多帮助...