【JavaScript】 – 滚动固定导航栏

2023年5月21日09:06:19

 黄色箭头指向  滚动条

黑色箭头指向   导航栏

没有滚动 之前  导航栏没有固定在顶部

任务是:随着滚动条滚动到一定位置  导航栏固定 顶部  dispaly:fixed

以下代码的 display 样式 已经配置,只需要添加一个类名就行  .fixed

 window.addEventListener('load', function() {
        // 获取元素navBar,后期需要获取它离页面顶部的距离,同时满足条件之后还要为其设置fixed样式
        let navBar = document.querySelector('#navBar')
        // 获取导航条的高度,因为后期内容面板的margin-top需要以这个值做为参照
        let navBarH = navBar.offsetHeight
        // mainPart:内容,后期需要为内容添加样式
        let mainPart = document.querySelector('#mainPart')
        // 获取navBar离页面顶部的距离
        let navBarTop = navBar.offsetTop

        // 添加页面滚动的监听:因为我们要获取当前页面垂直方向卷出屏幕的距离,用这个距离和之前获取的导航条离顶部的距离进行比较,如果大于等于应该添加fiexed样式
        window.addEventListener('scroll', function() {
          // 获取当前滚动出屏幕的距离
          let offset = document.documentElement.scrollTop
          // 判断卷出屏幕的距离是否大于导航条离顶部的距离
          if (offset >= navBarTop) {
            navBar.classList.add('fixed')
            // 为navBar添加定位样式之后,会造成元素脱标,从而导致内容往上移从而重叠,我们可以内容添加一个margin-top样式:样式的值就是导航条的高度
            mainPart.style.marginTop = navBarH + 10 + 'px'
          } else {
            navBar.classList.remove('fixed')
            // 如果没有定位样式,则将外边距还原
            mainPart.style.marginTop = 10 + 'px'
          }
        })
      })

  • 作者:头发茂盛男孩
  • 原文链接:https://blog.csdn.net/m0_55960697/article/details/123884886
    更新时间:2023年5月21日09:06:19 ,共 901 字。