• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

vue使用原生js实现滚动页面跟踪导航高亮的示例代码

vue 搞代码 4年前 (2022-01-08) 13次浏览 已收录 0个评论

这篇文章主要介绍了vue使用原生js实现滚动页面跟踪导航高亮的示例代码,滚动页面指定区域导航高亮。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

需要使用vue做一个专题页面。滚动页面指定区域导航高亮。

监听滚动页面事件,对比当前页面的位置与元素的位置,如果当前滚动的区域位置大于元素的位置,导航添加class,其他去掉class进行样式切换。

我使用的方法是在定位元素上添加id,在导航添加data-id属性,监听滚动事件,如果当前滚动区域大于定位元素区域,将元素的id赋值给变量,然后与导航的data-id进行匹配,切换class。

html结构

main.vue

  <div class="qz-home"> <div class="quiz-container"> <div class="quiz-ad-pic" id="pagetop"></div><div class="quiz-main"> <div class="quiz-main-inside" id="js-content"> </div></div></div></div>

navigation.vue

  <nav class="nav-container"> <div class="nav-mark"></div><div class="nav-main"> <ul class="nav-list"> <li>{{item.name}}</li></ul><div class="backtop"> </div></div></nav>

javascript

 export default { name: "Navigation", data() { return { navList: [ { name: "竞猜大厅", id: "quizhall" }, { name: "竞猜记录", id: "quizrecord" }, { name: "历史赛事", id: "quizHistory" }, { name: "我的竞猜", id: "quizMine" }, { name: "排行榜", id: "quizRank" }, { name: "玩法", id: "quizRule" } ], curindex: 0 }; }, mounted() <i style="color:transparent">本文来源gaodai$ma#com搞$$代**码网$</i>{ this.initScroll(); }, methods: { initScroll() { window.addEventListener('scroll', function() { // 封装类名函数集:判断、移除、增加、获取(简单粗暴版); function removeClass(obj, cls) { if (obj.className == cls) { obj.className = ""; } } function addClass(obj, cls) { if (obj.className != cls) { obj.className = cls; } } let pos = document.documentElement.scrollTop; if (pos > 300) { document.querySelector('.nav-container').style.display = 'block'; } else { document.querySelector('.nav-container').style.display = 'none'; } var menus = document.getElementById("js-nav").getElementsByTagName("li"); var items = document.getElementById("js-content").querySelectorAll(".item"); var currentId = ""; for (var i = 0; i  _itemTop - 200) { currentId = _item.id; } else { break; } } if (currentId) { for (var j = 0; j <menus.length; j++) { var _menu = menus[j]; // href属性获取的是整个link,需以#为界截除获取最后一个元素; var _href = _menu.getAttribute('data-id'); if (_href != currentId) { removeClass(_menu, "cur"); } else { addClass(_menu, "cur"); } } } }) } } };

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是vue使用原生js实现滚动页面跟踪导航高亮的示例代码的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:vue使用原生js实现滚动页面跟踪导航高亮的示例代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址