JS导航吸顶特效

效果图

页面滚动到一定位置,导航吸顶,不与滚动条同时运动

HTML

<header id="header">
    <img src="图片/header.PNG" alt="">
</header>
<nav id="nav">
    <img src="图片/navPNG.PNG" alt="">
</nav>
<section id="section">
    <img src="图片/section.PNG" alt="">
    <img src="图片/section2.PNG" alt="">
</section>

CSS

 *{
            margin: 0;
            padding: 0;
            border:none;
        }
        img{
            vertical-align: top;
            width: 100%;
        }
        .nav{
            position: fixed;
            top: 0;
        }

JS

封装求滚动条滚动长度的函数
为了处理兼容性问题

/**
 * 获取滚动的头部距离和左边距离
 * scroll().top scroll().left
 * @returns {{top: number, left: number}}
 */
function scroll() {
    if(window.pageXOffset!==null)//新型模式
    {
        return {
            top:window.pageYOffset,
            left:window.pageXOffset
        }
    }else if(document.compatMode==="CSS1Compat"){//严格模式
        return{
            top:document.documentElement.scrollTop,
            left:document.documentElement.scrollLeft,
        }
    }
    return{//异常模式
        top:document.body.scrollTop,
        left:document.body.scrollLeft,
    }
}

事件分析

页面滚动(onscroll)到一定位置时吸顶

<script src="Scroll.js"></script>
<script>
  window.onload = function () {
    var OffsetHeight=document.getElementById("nav").offsetTop;
    //计算导航栏距离顶部的距离
    console.log(OffsetHeight);
    var nav1=document.getElementById("nav");
    //获取nav
    console.log(nav1);
    //2、监听窗口的滚动
    window.onscroll = function () {
      var scrolltop=scroll().top;//获取滚动条的滚动长度
      console.log(scrolltop);
       if(scrolltop>=OffsetHeight){
          nav1.className="nav";
      }else
        nav1.className=" ";
    }
  }
    

注意点:
在滚动条往回滚时,要求清除nav样式
否则会造成回去以后导航栏还是吸顶的状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值