使用vue开发过程中有的项目会存在多级导航的情况,如下图,这种就存在了两层,那么该如何高亮一级导航,又该如何高亮二级导航这就是今天我要记录的内容。

1、高亮一级导航很简单,代码如下:

  1. // 点击一级导航
  2. changeFirstLevel(index,e) {
  3. this.secondIndexCur = -1;
  4. this.firstIndexCur = index;
  5. }

2、高亮二级导航,代码如下:

  1. // view部分
  2. <ul class="firstLevelNav">
  3.   <li v-for="(item, index) in customNav" :key="index">
  4.     <router-link :to="item.pathUrl">
  5.       <div :class="{'cur': firstIndexCur == index}" @click="changeFirstLevel(index, $event)">{{item.name}}</div>
  6.     </router-link>
  7.     <ul class="secondLevelNav">
  8.       <li v-for="(sonItem, sonIndex) in item.secondLevelNavList" :key="sonIndex">
  9.         <router-link :to="sonItem.pathUrl">
  10.           <div :class="[secondIndexCur == index + ',' + sonIndex ? 'cur' : '']" @click="changeSecondLevel(index, sonIndex, $event)">{{sonItem.name}}</div>
  11.         </router-link>
  12.       </li>
  13.     </ul>
  14.   </li>
  15. </ul>
  16.  
  17. // 点击二级导航
  18. changeSecondLevel(index, sonIndex, e) {
  19. this.firstIndexCur = -1;
  20. this.secondIndexCur = index + ',' + sonIndex;
  21. }

(注意:为什么在<router-link></router-link>中又写了一个div呢,是因为我在完成代码后点击导航高亮样式并不能成功添加,开始我是直接把class添加到了rouer-link上)

以下是导航组件的全部代码:

  1. <template>
  2. <!-- 自定义报表 - 左侧导航 -->
  3. <div class="customNav">
  4. <div class="pic">
  5. <img src="./images/pic.png" alt="">
  6. </div>
  7. <ul class="firstLevelNav">
  8. <li v-for="(item, index) in customNav" :key="index">
  9. <router-link :to="item.pathUrl">
  10. <div :class="{'cur': firstIndexCur == index}" @click="changeFirstLevel(index, $event)">{{item.name}}</div>
  11. </router-link>
  12. <ul class="secondLevelNav">
  13. <li v-for="(sonItem, sonIndex) in item.secondLevelNavList" :key="sonIndex">
  14. <router-link :to="sonItem.pathUrl">
  15. <div :class="[secondIndexCur == index + ',' + sonIndex ? 'cur' : '']" @click="changeSecondLevel(index, sonIndex, $event)">{{sonItem.name}}</div>
  16. </router-link>
  17. </li>
  18. </ul>
  19. </li>
  20. </ul>
  21. </div>
  22. </template>
  23.  
  24. <script>
  25. export default {
  26. data() {
  27. return {
  28. firstIndexCur: -1, // 一级导航添加类名元素
  29. secondIndexCur: -1, // 一级导航添加类名元素
  30. customNav: [{
  31. name: '数据源',
  32. pathUrl: '/dataSource',
  33. secondLevelNavList: [{
  34. name: '新建',
  35. pathUrl: '/newlyBuild/addData'
  36. }]
  37. },{
  38. name: '配置SQL',
  39. pathUrl: '/configSQL',
  40. secondLevelNavList: [{
  41. name: '新建',
  42. pathUrl: '/configNewlyBuild/addData'
  43. }]
  44. },{
  45. name: '业务SQL',
  46. pathUrl: '/businessSQL',
  47. secondLevelNavList: []
  48. }],
  49. pathName: ''
  50. }
  51. },
  52. mounted() {
  53. this.pathName = this.$router.history.current.path;
  54. this.pathName = this.pathName === '/' ? '/dataSource' : this.pathName; // 默认路由
  55. this.highLightLeftNav();
  56. },
  57. watch: {
  58. // 监听 url 的变化
  59. $route(to, from) {
  60. this.pathName = to.path;
  61. this.highLightLeftNav();
  62. }
  63. },
  64. methods: {
  65. // 点击一级导航
  66. changeFirstLevel(index,e) {
  67. this.secondIndexCur = -1;
  68. this.firstIndexCur = index;
  69. },
  70. // 点击二级导航
  71. changeSecondLevel(index, sonIndex, e) {
  72. this.firstIndexCur = -1;
  73. this.secondIndexCur = index + ',' + sonIndex;
  74. },
  75. // 刷新页面时根据url高亮左侧导航选项
  76. highLightLeftNav() {
  77. this.firstIndexCur = -1;
  78. this.secondIndexCur = -1;
  79. this.customNav.forEach((item, index) => {
  80. if(this.pathName.indexOf(item.pathUrl) !== -1) {
  81. this.firstIndexCur = index;
  82. return;
  83. }else if(item.secondLevelNavList.length){
  84. item.secondLevelNavList.forEach((sonItem, sonIndex) => {
  85. if(this.pathName.indexOf(sonItem.pathUrl) !== -1) {
  86. this.secondIndexCur = index + ',' + sonIndex;
  87. return;
  88. }
  89. });
  90. }
  91. });
  92. },
  93. }
  94. }
  95. </script>
  96.  
  97. <style lang="scss" type="text/css" scoped>

vue高亮一级、二级导航的更多相关文章

  1. Vue 中的Vue Router一级路由,二级路由,三级路由以及跳转

    今天编写了一下Vue中的路由 先用命令行新建一个空的项目,并且我知道要用路由,就下载了路由的相关依赖 vue init webpack demo5 完毕之后进入所在的项目 cd demo5 之后用vs ...

  2. TP3.2二级导航与高亮显示

    闲来无事,记记笔记 二级导航的实现,就是一个二级联动,嗯 先来看看数据库,我喜欢用一个表,表多了就不好玩了 二级代号取一级导航的代号就行了,做个简单的栗子: 代码部分: 看控制器,大头在这: < ...

  3. js二级导航

    js写二级导航要点 1.ul li 2.js获取元素 3.setInterval(function(),time); 代码如下 <style type="text/css"& ...

  4. jQuery制作右侧边垂直二级导航菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 纯CSS实现二级导航下拉菜单--css的简单应用

    思想:使用css的display属性控制二级下拉菜单的显示与否.当鼠标移动到一级导航菜单的li标签时,显示二级导航菜单的ul标签.由于实现起来比较简单,所以在这里直接给出了参考代码. 1.纯CSS二级 ...

  6. 用jquery制作一个二级导航下拉菜单

    1使用$(function(){...})获取到想要作用的HTML元素. 2通过使用children()方法寻找子元素.       3通过使用show()方法来显示HTML元素.       4通过 ...

  7. JS写的二级导航栏(利用冒泡原理)

    今天给大家分享一种用JS写的导航栏,虽然我们工作中不会使用JS来做导航栏,为了练习我们用JS来做一个JS导航栏 这种方法要比其他方法代码量少很多,但是需要对事件冒泡有一定的理解,如果需要理解冒泡可以参 ...

  8. JavaScript(获取或设置html元素的宽,高,坐标),确定和判断鼠标是否在元素内部,二级导航菜单鼠标离开样式问题解决

    设置: document.getElementById('id').style.width=value    document.getElementById('id').style.height=va ...

  9. html css二级导航栏

    二级导航栏制作: 1.将一级导航栏去除列表样式(list-style:none),并给予浮动,使其横向排列(float:left) 2.给每个li中添加一个<a></a>标签, ...

随机推荐

  1. ZT:我们身边大多数的事都是暂时性的

    1. 家庭放在首位. 2. 戒酒能有助于身体健康. 3. 经常跑步以及运动有益于身心健康. 4. 保证心胸开阔.让爱自动来到你的身边,而不需要你自己去拼命寻找. 5. 区分优秀的导师和老师.不断提升自 ...

  2. ubuntu下如何卸载nvidia显卡驱动?

    答: sudo apt-get remove nvidia* -y

  3. javascript之DOM四位的验证码简单实现

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 学习前端第一天心得体会(初步了解HTML5的新特性以及和HTML的区别)

    一.HTML5是什么? HTML5 是最新的 HTML 标准. HTML5 是专门为承载丰富的 web 内容而设计的,并且无需额外插件. HTML5 拥有新的语义.图形以及多媒体元素. HTML5 提 ...

  5. 看日志有没有 出现错误的字段 (如 crash ) 查找app闪退

    查看monkey的错误 在log里面查找 error  /  crashed /  Exception 1. ANR问题:在日志中搜索“ANR” 2.崩溃问题:在日志中搜索“Exception”  F ...

  6. Python re 正则表达式【一】【转】

    数量词的贪婪模式与非贪婪模式 正则表达式通常用于在文本中查找匹配的字符串.Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符:非贪婪的则相反,总是尝试匹配尽 ...

  7. etcd三节点安全集群搭建-pki安全认证

    etcd安全集群搭建就是 pki安装认证 1.环境: 三台centos7. 主机 192.168.0.91 192.168.0.92 192.168.0.93 都关闭防火墙 都关闭selinux 配置 ...

  8. Django模板系统-标签Tags

    for <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% endfor %} </ul ...

  9. Kali Linux 2019.2使用华为源

    一.将默认的配置源注释掉 root@zinuo:~# vim /etc/apt/sources.list 注释: #deb http://http.kali.org/kali kali-rolling ...

  10. xDeepFM

    1. xDeepFM优势 自动高效的学习隐式和显示的高维特征交互 设计一个新的CIN网络可以显示学习高阶特征交互,且为Vector-Wise 2. xDeepFM整体算法框架    整个网络结构主要分 ...