欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS---封装getScroll函数 & 案例:固定导航栏

程序员文章站 2023-03-26 19:04:14
封装getScroll函数 1. 获取页面向上或者向左卷曲出去的距离的值 2. 浏览器的滚动事件 function getScroll() { return { left: window.pageXOffset || document.documentElement.scrollLeft || do ......

封装getscroll函数

 

1. 获取页面向上或者向左卷曲出去的距离的值
2. 浏览器的滚动事件
  function getscroll() {
    return {
      left: window.pagexoffset || document.documentelement.scrollleft || document.body.scrollleft||0,
      top: window.pageyoffset || document.documentelement.scrolltop || document.body.scrolltop || 0
    };
  }

    //浏览器的滚动事件
    window.onscroll = function () {
      console.log(getscroll().top);
    };

 

案例:固定导航栏

获取scrolltop值后判断高度大于导航栏的高,就设置样式固定住,同时,主页部分的margintop值,为防止浮动/脱标造成的影响,这个值设置为导航栏的高

<!doctype html>
<html>

<head lang="en">
  <meta charset="utf-8">
  <title></title>
  <style>
    * {
      margin: 0;
      padding: 0
    }

    img {
      vertical-align: top;
    }

    .main {
      margin: 0 auto;
      width: 1000px;
      margin-top: 10px;

    }

    .fixed {
      position: fixed;
      top: 0;
      left: 0;
    }
  </style>
</head>

<body>
  <div class="top" id="toppart">
    <img src="images/top.png" alt="" />
  </div>
  <div class="nav" id="navbar">
    <img src="images/nav.png" alt="" />
  </div>
  <div class="main" id="mainpart">
    <img src="images/main.png" alt="" />
  </div>
  <script src="common.js"></script>
  <script>

    //获取页面向上或者向左卷曲出去的距离的值
    function getscroll() {
      return {
        left: window.pagexoffset || document.documentelement.scrollleft || document.body.scrollleft || 0,
        top: window.pagexoffset || document.documentelement.scrolltop || document.body.scrolltop || 0
      };
    }

    //滑动事件
    window.onscroll = function () {
      if (getscroll().top >= my$("toppart").offsetheight) {
        //设置第二个div的类样式
        my$("navbar").classname = "nav fixed";
        //设置第三个div的maintop值
        my$("mainpart").style.margintop = my$("navbar").offsetheight + "px";
      } else {
        my$("navbar").classname = "nav";
        my$("mainpart").style.margintop = "10px";
      }
    };
  </script>

</body>

</html>