我的GitHub前端经验总结,喜欢的话请点star✨✨Thanks.:https://github.com/liangfengbo/frontend-develop

vuejs导航条高亮我的做法:

  • 用一个数组存导航条,用v-for循环它,这样可以减少代码,二可以使用它的下标来判断高亮,三还可以获取后端的导航信息来遍历
  • 重点是在:routerLink(index, path)函数,传入当前点击的下标,自定义一个下标,判断是否相等就用三元符号判断多给一个高亮样式
  • 如何解决刷新就不高亮或第一个高亮了,很简单,监听一下当前路由在判断就好了
  • 具体代码都在下面了

效果图:

html代码

  1. <div class="nav-box">
  2. <!-- 导航列表 -->
  3. <li class="nav-item"
  4. v-for="(item, index) in nav"
  5. @click="routerLink(index, item.path)"
  6. :key="index">
  7. <!-- 判断高亮表 -->
  8. <p :class=" navIndex === index ? 'item-cn item-cn-active' : 'item-cn'">
  9. {{ item.title }}
  10. </p>
  11. <!-- 判断高亮表 -->
  12. <p :class="navIndex === index ? 'item-en item-en-active' : 'item-en'">
  13. {{ item.en }}
  14. </p>
  15. </li>
  16. </div>

data数据

  1. // 导航条
  2. data() {
  3. return {
  4. nav: [
  5. {title: '首页', en: 'Code', path: '/'},
  6. {title: '开源', en: 'Source', path: '/source'},
  7. {title: '关于', en: 'About', path: '/about'},
  8. ],
  9. navIndex: 0,
  10. }
  11. },

methods方法:

  1. /**
  2. * 路由跳转
  3. * @param index
  4. * @param link
  5. */
  6. routerLink(index, path) {
  7. // 点击哪个路由就赋值给自定义的下下标
  8. this.navIndex = index;
  9. // 路由跳转
  10. this.$router.push(path)
  11. },
  12. /**
  13. * 检索当前路径
  14. * @param path
  15. */
  16. checkRouterLocal(path) {
  17. // 查找当前路由下标高亮
  18. this.navIndex = this.nav.findIndex(item => item.path === path);
  19. }

监听路由变化获取当前路由

  1. watch: {
  2. "$route"() {
  3. // 获取当前路径
  4. let path = this.$route.path;
  5. // 检索当前路径
  6. this.checkRouterLocal(path);
  7. }
  8. },

css样式

  1. .nav-box {
  2. display: flex;
  3. }
  4. .nav-item {
  5. text-align: center;
  6. padding: 0 32px;
  7. position: relative;
  8. display: inline-block;
  9. font-size: 14px;
  10. line-height: 25px;
  11. }
  12. /*导航普通状态*/
  13. .item-cn {
  14. color: #1c2438;
  15. font-weight: 800;
  16. }
  17. /*导航普通状态*/
  18. .item-en {
  19. color: #666;
  20. font-size: 12px;
  21. }
  22. /*导航高亮*/
  23. .item-cn-active {
  24. color: #2d8cf0;
  25. }
  26. /*导航高亮*/
  27. .item-en-active {
  28. color: #5cadff;
  29. }
  30. .nav-item:hover .item-cn {
  31. color: #2d8cf0;
  32. }
  33. .nav-item:hover .item-en {
  34. color: #5cadff;
  35. }
  36. .nav-item:after {
  37. position: absolute;
  38. right: 0;
  39. top: 20px;
  40. content: '';
  41. width: 1px;
  42. height: 16px;
  43. background-color: #f8f8f8;
  44. }
  45. .nav-item:after:last-child {
  46. width: 0;
  47. }

vuejs切换导航条高亮路由高亮做法的更多相关文章

  1. vuejs导航条动态切换active状态

    用一个数组存导航条,用v-for循环它,这样可以减少代码,二可以使用它的下标来判断高亮,三还可以获取后端的导航信息来遍历 重点是在:routerLink(index, path)函数,传入当前点击的下 ...

  2. vue父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失

    vue父路由默认选中第一个子路由,切换子路由让父路由高亮不会消失 正常默认会有 .router-active-class 识别高亮 达到以上注意: 1. exact 不要加 注意是不要加,exact ...

  3. 六、Vue-Router:基础路由处理、路由提取成单独文件、路由嵌套、路由传参数、路由高亮、html5的history使用

    一.vue-router的安装 官网文档 [官网]:https://cn.vuejs.org/v2/guide/routing.html [router文档]:https://router.vuejs ...

  4. vue + element-ui 制作下拉菜单(可配置路由、可根据路由高亮list、可刷新自动展开定位路由)

    本篇文章分享一篇关于 vue制作可路由切换组件.可刷新根据路由定位导航(自动展开).可根据路由高亮对应导航选项 一.实现的功能如下: 1.可折叠导航面板 2.点击导航路由不同组件           ...

  5. VueJs(12)---vue-router(导航守卫,路由元信息)

    vue-router(导航守卫,路由元信息) 之前泄露两篇有关vue-router博客: VueJs(10)---vue-router(进阶1) VueJs(11)---vue-router(进阶2) ...

  6. vue-11-路由嵌套-参数传递-路由高亮

    1, 新建vue-router 项目 vue init webpack vue-router-test 是否创建路由: 是 2, 添加路由列表页 在 component下创建 NavList 页面 & ...

  7. phpcms 完美实现 导航栏当前栏目高亮

    我们在用phpcms做网站的时候,经常碰到导航栏高亮功能,或者侧栏高亮,这个会涉及到几个问题: .栏目列表页子栏目高亮判断,如果当前页面为子栏目,他的顶级栏目如果在导航栏也要高亮. .内容页高亮,这个 ...

  8. Swift - 使用导航条和导航条控制器来进行页面切换

    通过使用导航条(UINavigationBar)与导航条控制器(UINavigationController)可以方便的在主页面和多层子页面之间切换.下面通过一个简单“组件效果演示”的小例子来说明如何 ...

  9. CSS实现导航条Tab切换的三种方法

    前面的话   导航条Tab在页面中非常常见,本文说详细介绍CSS实现导航条Tab的三种方法 布局   根据上图所示,先规定几个定义,上图的模块整体叫做导航,由导航标题和导航内容组成.要实现上图所示的布 ...

随机推荐

  1. 解决android模拟器无法上网问题

    1.  将 android的tool增加到,windows 环境变量 path中, D:\Android\android-sdk_r3-windows\android-sdk-windows\tool ...

  2. struts2 no extension(excludePattern)

    采用struts2 小伙伴非常希望更改或删除action扩展,本文将帮助你实现 struts2-core-2.3.16.jar , 下载链接: http://repo1.maven.org/maven ...

  3. C++ 11开发环境的搭建(Windows Platform)

    C++ 11开发环境的搭建(Windows Platform) Code::Block IDE:Code::Blocks  12.11版本号 Compiler:TDM-GCC        http: ...

  4. 利用tcpdump抓包工具监控TCP连接的三次握手和断开连接的四次挥手

    TCP传输控制协议是面向连接的可靠的传输层协议,在进行数据传输之前,需要在传输数据的两端(客户端和服务器端)创建一个连接,这个连接由一对插口地址唯一标识,即是在IP报文首部的源IP地址.目的IP地址, ...

  5. matlab figure 调整大小、字体、线宽

    用 matlab 画了一张图,投稿时要缩小,缩小后字体就会过小或者发虚. 解决办法: % figure resize set(gcf,'Position',[100 100 260 220]); se ...

  6. 记一次虚拟化环境下Windows IO性能的解析

    前言随着云计算技术与服务的发展和进步,越来越多的客户选择将业务部署到云端.但由于引入了虚拟化层,在业务部署过程中经常会遇到IO问题,通常也不易调试.本文主要介绍利用perf.systemtap等工具, ...

  7. HALCON 光圈和景深的关系

    光圈越大,越亮,景深越小 光圈越小,越暗,景深越大 景深为成像清晰的那个范围

  8. CommandParameter binding Introduction:

    Design Patterns SampleCode https://csharpdesignpatterns.codeplex.com/ DevExpress Support Center http ...

  9. openFrameworks 是一个旨在助力你进行开创性工作的开源 C++ 工具箱(是很多其它类库的组合)

    openFrameworks 是一个旨在助力你进行开创性工作的开源 C++ 工具箱,提供了简单且直观的实验框架.该工具箱具有常见的工具,并集合了众多常见的库: OpenGL, GLEW, GLUT,  ...

  10. QML中实现setTimeout和setInterval

    Qt的QML中,js未提供setTimeout和setInterval,可以通过下面的代码实现. Timer {id: timer} function setTimeout(cb,delayTime) ...