js实现滚动吸顶效果

315 阅读1分钟
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      .header {
        width: 100%;
        height: 60px;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <div class="header"></div>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <h1>123</h1>
    <script>
      const header = document.querySelector(".header");
      
      // 获取header到页面顶部的高度
      const headerOffsetTop = header.offsetTop;
      console.log(headerOffsetTop);

      // 页面滚动监听
      window.onscroll = function () {

        // 获取滚动高度
        const scrollHeight = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset;
        console.log('滚动高度',scrollHeight);

        // 如果页面滚动高度大于header到顶部的高度,就让header吸顶
        if (scrollHeight >= headerOffsetTop) {
          header.style.position = "fixed";
          header.style.top = "0px";
        } else {
          // 如果不大于就不定位
          header.style.position = "";
        }
      };

      // window.addEventListener("scroll", function () {
      //   // 获取滚动高度
      //   const scrollHeight = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset;
      //   console.log('滚动高度',scrollHeight);

      //   // 如果页面滚动高度大于header到顶部的高度,就让header吸顶
      //   if (scrollHeight >= headerOffsetTop) {
      //     header.style.position = "fixed";
      //     header.style.top = "0px";
      //   } else {
      //     // 如果不大于就不定位
      //     header.style.position = "";
      //   }
      // });
    </script>
  </body>
</html>