javascript - 使用添加事件监听器创建滚动事件 - Javascript

标签 javascript html scroll addeventlistener

我试图在普通 JS 中实现一些目标,但它没有发挥作用。我有一个元素想要在一定的滚动长度后更改颜色,但是当我使用 addEventListener('scroll', function) 等时它不起作用,但我的控制台中没有收到任何错误。
任何帮助都会很棒。

艾米丽

代码如下,我这里有一支笔:https://codepen.io/emilychews/pen/eRYwzm

HTML

<div class="box"></div>

CSS

body {height: 200vh;}

.box {
  width: 200px;
  height: 200px;
  background: red;
}

JavaScript

var box = document.getElementsByClassName('box')[0];

window.addEventListener('scroll', function() {

  if (box.scrollTop > 0) {
    box.style.background = "blue";
  }

});

最佳答案

您必须在文档 body 元素上获取 scrollTop,而不是在您的盒子上。在您的情况下,box.scrollTop 将始终为 0

替换这个:

  if (box.scrollTop > 0) {
    box.style.background = "blue";
  }

这样:

  if (document.body.scrollTop > 0) {
    box.style.background = "blue";
  }

另请注意,目前最好使用 window.pageYOffset,因为 document.body.scrollTop严格模式中已被弃用。 Read this了解有关整个窗口滚动检测的更多信息。

演示:https://codepen.io/anon/pen/mwdZwL

关于javascript - 使用添加事件监听器创建滚动事件 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356572/

相关文章:

javascript - 如何更改此插件的 lightbox2 箭头位置?

javascript - 如何找到 body 元素之后的每个子元素,并获取其中包含特定类的元素的 html

html - 溢出 : scroll not working in a specific column grid with Bootstrap 4

c# - WPF - 在 Macbook pro 触控板上的两指水平滚动

css - 使用类链接到网页上的位置

javascript - 如何使用 Django 接收 ajax 请求?

Javascript 日期时间比较返回 false 但分支 stmt 仍然执行

javascript - 如何在vuejs中追加多行

html - 在制作工具提示时在另一个跨度内水平居中跨度?

javascript - 如何通过匹配父级在树结构中打印动态嵌套的 Json 数组