ELEMENTUI 实现楼梯式导航

1.想要实现的效果

twst.gif

2. 需求

div滚动的时候,根据滚动的距离,来判断页签的高亮和定位

3. 实现原理

使用addEventListener监听div的scroll事件,获取div滚动的sceollTop, 使用forEach来获取div所在的offsetTop值,当scrollTop >= item.offsetTop 时,就高亮当前楼梯
使用scrollTo的 behavior: 'smooth'来定位我们要的楼梯的位置

4. 实现代码

  mounted() {
    this.box = this.$refs.viewBox // 获取dom元素
    this.box.addEventListener('scroll', () => {
      const top = this.$refs.viewBox.scrollTop
      this.navScroll(top)
    })
  },
  methods:{
    navScroll(top) {
      const scrollTop = top
      const floor = document.querySelectorAll('.approval-floor')
      floor.forEach((item, index) => {
        if (scrollTop >= item.offsetTop) {
          this.navNum = index
          this.activeName = String(index)
          // break
        }
      })
    },
    handleClick() {
      // 滚动到指定位置
      const floor = document.querySelectorAll('.approval-floor')
      const offsetTop = floor[this.activeName].offsetTop
      this.$refs.viewBox.scrollTo({
        top: offsetTop,
        behavior: 'smooth'
      })
    }
  }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容