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