检查是否使用JavaScript滚动过div(无jQuery)

检查是否使用JavaScript滚动过div(无jQuery),javascript,Javascript,我目前正在学习JavaScript,我遇到的所有解决方案都使用jQuery库。有没有办法做到这一点,仅仅使用纯JavaScript 这样做的想法是: function passed(element) {if passed: do something} 收听滚动事件。要查找当前滚动位置,可以调用scollY方法 要获取元素顶部的Y坐标,可以使用元素的偏移设置。因为元素有一个高度,所以我们要将该高度添加到计算中 就这样 window.addEventListener(“滚动”,函数(){ var

我目前正在学习JavaScript,我遇到的所有解决方案都使用jQuery库。有没有办法做到这一点,仅仅使用纯JavaScript

这样做的想法是:

function passed(element) {if passed: do something}

收听
滚动
事件。要查找当前滚动位置,可以调用
scollY
方法

要获取元素顶部的Y坐标,可以使用元素的
偏移设置
。因为元素有一个高度,所以我们要将该高度添加到计算中

就这样

window.addEventListener(“滚动”,函数(){
var elementTarget=document.getElementById(“第2节”);
if(window.scrollY>(elementTarget.offsetTop+elementTarget.offsetHeight)){
警报(“您已滚动过第二个div”);
}
});
。第1节{
高度:400px;
宽度:100%;
背景:绿色;
}
.第3节{
高度:400px;
宽度:100%;
背景:橙色;
}

滚动此div
使用可以获得元素的Y坐标

使用,可以获得滚动条的当前Y坐标

这样就得到了一个元素的高度

因此,剩下要做的唯一一件事就是检查scrollY>(OffsetSight+offsetTop)。如果这是真的,则通过滚动传递元素


我把实现留给您,作为学习Javascript的练习;)

您应该能够使用以下功能:

if(window.scrollY >(element.offsetHeight + element.offsetTop)){
    // do something 
}
if(element.getBoundingClientRect().y<0){
//做点什么
}

我想您可以在这里找到具体情况的答案,当底部为负数时,您已滚动通过请记住元素坐标是左上角的坐标。不幸的是,没有一个属性可以给出绝对坐标。看看如何计算它-->使用多个div(例如,具有相同类名的div)进行计算的任何方法?
if (element.getBoundingClientRect().y < 0) {
  // do something
}