如何使用 JavaScript 代码在页面滚动时实时监测某个特定段落何时与页面可视区域顶部接触?

如何使用 javascript 代码在页面滚动时实时监测某个特定段落何时与页面可视区域顶部接触?

监测元素滚动位置的 javascript 代码

如何在滑动页面时检测某个段落何时与页面可视区域顶部接触?

html 代码

<body>
  <div>
    <!-- 一个段落开始 -->
    <div dh="a">a</div>
    <ul h="a">
      <li>...</li>
      ...
    </ul>
    <!-- 一个段落结束 -->
    <div dh="b">b</div>
    <ul h="b">
      <li>...</li>
      ...
    </ul>
    ....
    <div dh="z">z</div>
    <ul h="z">
      <li>...</li>
      ...
    </ul>
  </div>
</body>

javascript 代码

通过 window.scroll 事件侦测元素滚动位置,当目标元素的顶部与页面可视区域顶部接触时触发事件。以下是如何实现的代码:

const paragraphs = document.querySelectorAll('div[dh]');

const observer = new IntersectionObserver((entries) => {
  entries.forEach((entry) => {
    console.log('entry', `${entry.target.getAttribute('dh')}`, entry.boundingClientRect.y);
  });
});

paragraphs.forEach((paragraph) => {
  observer.observe(paragraph);
});

说明

  • intersectionobserver api 用于监视元素与视口之间的交集状态。
  • boundingclientrect 属性提供元素相对于视口的位置。
  • 当元素与视口顶部接触时,entry.boundingclientrect.y 等于 0。对于位于视口上方的元素,它将为负值;对于位于视口下方的元素,它将为正值。
  • 通过比较各个元素的 entry.boundingclientrect.y 值,可以确定哪个元素在滑动时与页面顶部接触。

以上就是如何使用 JavaScript 代码在页面滚动时实时监测某个特定段落何时与页面可视区域顶部接触?的详细内容,更多请关注其它相关文章!