vue 导航锚点——点击平滑滚动,导航栏对应变化

情况描述:
h5页面的活动首页,首屏图片展示,图片下有导航栏,以及模块展示。
滑动屏幕,导航栏吸顶,点击导航栏,滚动到对应模块

//点击导航栏获取点击index
goDetails(index) {
       this.activeMenu = index  // 点击index加样式
       let height = Number(document.getElementById('navA').offsetHeight) // 导航的高度
       let toTop = this.$refs.footJump[index].offsetTop  // index对应内容的高度
       let total =
         index === 0 ? toTop - height : this.fix === 1 ? toTop - height : toTop - 2 * height
       let distance = document.documentElement.scrollTop || document.body.scrollTop
       // 获取当前页面的滚动条纵坐标位置
       
       // 平滑滚动,时长500ms,每10ms一跳,共50跳
       let step = total / 50 
       if (total > distance) { 
         smoothDown()
       } else {
         let newTotal = distance - total
         step = newTotal / 50
         smoothUp()
       }
       function smoothDown() {
         if (distance < total) {
           distance += step
           document.body.scrollTop = distance // 网页被卷去的高
           document.documentElement.scrollTop = distance // 当前页面的滚动条纵坐标位置
           setTimeout(smoothDown, 10)
         } else {
           document.body.scrollTop = total
           document.documentElement.scrollTop = total
         }
       }
       function smoothUp() {
         if (distance > total) {
           distance -= step
           document.body.scrollTop = distance
           document.documentElement.scrollTop = distance
           setTimeout(smoothUp, 10)
         } else {
           document.body.scrollTop = total
           document.documentElement.scrollTop = total
         }
       }
     }
     

导航吸顶

     checkClass() {
       let scrollTop = document.documentElement.scrollTop || document.body.scrollTop
       let page2 = this.$refs.footJump[1].offsetTop - 85
       let page3 = this.$refs.footJump[2].offsetTop - 85
       this.activeMenu = scrollTop >= page3 ? 2 : scrollTop >= page2 ? 1 : 0
       // 滑动的过程中,进入到模块范围,对应的导航栏加上样式
     },
    //  导航吸顶
     handleScroll() {
       let scrollTop = document.documentElement.scrollTop || document.body.scrollTop
       this.fix = scrollTop > document.getElementById('navA').offsetTop ? 1 : 0
       this.checkClass()
     },

你可能感兴趣的:(功能)