检测用户已滚动到第一部分

时间:2018-12-06 20:56:24

标签: javascript jquery

我目前正在基于scrollTop切换标题类,并将逻辑包装在

if(scroll_start >= 600) {...}

但是它不能理想地工作,因为显然屏幕分辨率会发生变化。

理想情况下,我想这样做(用伪代码)

if (first section (with an id) is scrolled past) {...}

但是我不确定如何实现?有什么建议吗?

谢谢

2 个答案:

答案 0 :(得分:1)

获取元素的高度,然后将其从顶部添加到元素的位置

var elementPosition = $([element]).position().top + $([element]).height()

$(document).on('scroll', function() {
    if($(this).scrollTop() > elementPosition){
        // actions
    }
})

答案 1 :(得分:1)

这里是一个例子:

      window.addEventListener("scroll", function(){
          var two = document.getElementById("One");
          if (window.scrollY > two.offsetTop + two.offsetHeight){
              console.log("You got it!");
          }

      })
 #One{
        height:50px;
        width:100%;
        background-color:lightblue;
    }
    #Two{
        height:1000px;
        width:100%;
    }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
      <div id="One">Goto: HERE</div>
      <div id="SCROLL">HERE:</div>
      <div id ="Two"></div>
</body>
</html>