当一个部分用Vanilla JS触及视口顶部时,如何触发一个函数?

问题描述 投票:-2回答:1

我基本上希望浏览器在用户滚动时触摸视口顶部时触发一个函数,我不确定如何使用Vanilla JS执行此操作。

我发现了一些jQuery备选方案,但我只是想弄清楚Javascript目前是如何工作的,所以我不确定从哪里开始或者google什么的。

javascript viewport
1个回答
1
投票

以下示例创建一个内部包含单个div的页面。 scroll事件处理程序使用Element.getBoundingClientRect()来获取div相对于视口的位置,并在div位于视口顶边或上方时将msg记录到控制台。

var handlerFired;
window.addEventListener('scroll', function(e){
  var containerTop = document.querySelector('.container').getBoundingClientRect().top;
  if (containerTop <= 0) {
    if (!handlerFired) {
      handlerFired = 1;
      console.log('container at top of viewport or above');
    }    
  }
  if (containerTop > 0) {
    handlerFired = 0;
  }
});
body{
  height:2000px;
}
.container{
  width:300px;
  height:200px;
  border:5px solid red;
  position: absolute;
  top: 100px;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

  <div class='container'> <p>scroll window ...</p> </div>

</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.