标签:index vue false 定位导航 fixedMenu 双向 scrollTop document const
需求:实现双向定位导航效果,点击左侧菜单,右侧滚动到相应的位置。滚动右边,左侧相应菜单高亮。
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 }
标签:index,vue,false,定位导航,fixedMenu,双向,scrollTop,document,const 来源: https://www.cnblogs.com/guwufeiyang/p/13112062.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。