vue双向定位导航效果

需求:实现双向定位导航效果,点击左侧菜单,右侧滚动到相应的位置。滚动右边,左侧相应菜单高亮。

html代码:

复制代码
 1 <ul class="EntTake_main_left" :class="{ 'fixed-menu': fixedMenu }">
 2   <li
 3     class="forensics-main-item nav1"
 4     v-for="(val, index) in menuList"
 5     :key="index"
 6     :class="menuClickIndex === index ? 'clickStyle' : ''"
 7     @click="clickMenu(index)"
 8   >
 9     {{ val }}
10   </li>
11 </ul>
复制代码

data里定义数据:

复制代码
isFixed: false,
fixedMenu: false,
scrollTop: 0,
menuList: [
    '课程信息',
    '课程及收费依据',
    '报名政策',
    '所需材料信息',
    '培训流程',
    '证书样本',
    '常见问题'
],
menuClickIndex: 0,
复制代码

js中代码:

复制代码
 1 methods: {
 2   // 点击左侧菜单
 3    clickMenu(index) {
 4       this.menuClickIndex = index;
 5        const jump = document.querySelectorAll('.section');
 6        const total = jump[index].offsetTop - 76;
 7        document.body.scrollTop = total;
 8        document.documentElement.scrollTop = total;
 9    },
10    dataScroll() {
11        this.scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
12        if (this.scrollTop && this.scrollTop > 260) {
13            this.fixedMenu = true;
14        } else {
15            this.fixedMenu = false;
16        }
17        this.isFixed = this.scrollTop > 258;
18    },
19    loadScroll() {
20        const sections = document.querySelectorAll('.section');
21        sections.forEach((item, index) => {
22            if (this.scrollTop >= item.offsetTop - 200) {
23                this.menuClickIndex = index;
24            }
25        });
26    }
27 },
28  mounted() {
29     window.addEventListener('scroll', this.dataScroll);
30  },
31  watch: {
32    scrollTop() {
33       this.loadScroll();
34    }
35  },
36  destroyed() {
37     window.removeEventListener('scroll', this.dataScroll, false);
38  }
复制代码

 

posted @   鼓舞飞扬  阅读(704)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示