javascript - 如何在滚动 N 个像素后取消滚动事件

标签 javascript html css scroll

输入:

  • 1 个向下滚动事件滚动 100 像素。
  • HTML 元素位于页面底部下方 5 个像素处。它不在屏幕上。
  • Javascript 函数会检测 HTML 元素的至少 1 个像素何时出现在屏幕上,并且:
    • 自动滚动页面,使元素完全显示在屏幕上。
    • 在动画期间阻止其他滚动事件

事件:

  • 用户执行 1 次向下滚动事件(以下称为“滚动事件”)。

预期结果:

  • 滚动 6 个像素后 - 当元素的 1 像素可见时 - 滚动事件被取消,并且 JavaScript 函数启动自动滚动。

实际结果:

  • 其他滚动事件已正确阻止,但只要滚动事件尚未完成其 100 像素滚动(看起来不稳定),第一个滚动事件和自动滚动就会发生冲突。
<小时/>

我确实尝试在动画期间对“body”执行“overflow:hidden”,但这并没有取消滚动事件,在自动滚动的动画完成后仍然继续滚动页面(具体使用笔记本电脑触控板)。

有什么想法吗?谢谢!

P.S.:我希望能得到本地 JavaScript 答案。

最佳答案

您可以使用window.pageYOffset

这是一个示例:if 语句中的代码仅在距页面顶部的前 100 像素内运行

window.addEventListener("scroll", function(){
    if(window.pageYOffset < 100) {
        console.log("hi there");
    }
});

关于javascript - 如何在滚动 N 个像素后取消滚动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47355052/

相关文章:

javascript - 用户界面 - 内联帮助覆盖

javascript - HTML5拖放传输时调整div

javascript - html5、javascript - 添加推文页面部分的功能

html - 菜单链接不向右浮动

javascript - 单击一次将图像从其设置位置移动,然后单击一下返回到原始位置?

css - 智能手机和平板电脑最常用的媒体查询?

javascript - 转义 javascript 中的正则表达式特殊字符,但仍保留匹配关键字的字符串完整性

javascript - Rails JavaScript 开发 : debug vs releases

html - 空白 : nowrap seems to affect inner elements position: absolute

javascript - 像 toggle 一样替换 div html