vue-router二级导航切换路由及高亮显示的实现方法


Posted in Javascript onJuly 10, 2019

这里以网易云音乐作为示例,效果图:

vue-router二级导航切换路由及高亮显示的实现方法

我们先一层一层写导航

先设计第一层

1.设计导航页面样式

第一个导航页面为Discover

Discover.vue:

<!-- -->
<template>
 <div>
 发现
 </div>
</template>


<script>
export default {
 name: "discover",
 data() {
 return {
 };
 }
};
</script>
<style scoped>
</style>

第二个导航页面为Mymusic

其余代码一样,注意要把name改为相应路由

name: "mymusic"

2.配置路由

index.js:

import DisCover from '@/components/DisCover'
import MyMusic from '@/components/MyMusic'
……

 routes: [
 {
  path: '/discover',
  name: 'discover',
  component: DisCover
 },
 {
  path: '/mymusic',
  name: 'mymusic',
  component: MyMusic
 }
 ]

3.使用router-link制作导航

我们创建一个新组件Guide.vue,把他插入到app.vue中

设计好路由的数据源:

guides:[
  {
   id:0,
   name:'发现音乐',
   link:'/discover'
  },{
   id:1,
   name:'我的音乐',
   link:'/mymusic'
  },
  {
   id:2,
   name:'朋友',
   link:'friend'
  },
  {
   id:3,
   name:'商城',
   link:'mall'
  },
  {
   id:4,
   name:'音乐人',
   link:'musician'
  },
  {
   id:5,
   name:'下载客户端',
   link:'download'
  }
  ]

Guide.vue:

<ul class="nav nav-pills main-nav">
   <li v-for="(item,index) in guides" :key="index" role="presentation"
   :class="item.id==guidecurrent?'guide-active':''"
    >
    <router-link :to="item.link">{{item.name}}</router-link>
    </li>
   
   </ul>

to:是我们的导航路径,要填写的是你在router/index.js文件里配置的path值

4.单页面多路由区域操作

我们在App.vue中加入<router-view>

<template>
 <div id="app">
 <Guide></Guide>
 <router-view/>
 </div>
</template>

<router-view>区域通过配置路由的js文件,来操作这些区域的内容

设计好样式后,我们可以发现我们的页面上出现了导航

vue-router二级导航切换路由及高亮显示的实现方法

那我们如何设置默认选项并未其设置样式呢?
先定义一个定义当前页面的变量:

guidecurrent:0

设置选中样式:

.guide-active{
 background: black;
}

.guide-active::after {
 content: "??";
 font-size: 8px;
 position: absolute;
 color: rgb(182, 15, 15);
 top: 87%;
 left: 50%;
 transform: translate(-10px, -5px);
}

通过v-bind属性将class属性赋给每一个<li>元素

也就是说只有当前页面的<li>元素才会被加载active样式

这里注意vue中的属性如果要以变量设置

必须要写成 v-bind:属性名]="[属性值]"的形式

<li v-for="(item,index) in guides" :key="index" role="presentation"
  :class="item.id==guidecurrent?'guide-active':''"
   >
  <router-link :to="item.link">{{item.name}}</router-link>
 </li>

下面我们设计二级导航

5.二级导航页面样式

与上面相同,我们创建两个.vue页面

Rank.vue和Recommend.vue

6.配置路由

index.js

routes: [
 {
  path: '/discover',
  name: 'discover',
  component: DisCover,
  children:[
  {path:'rec',component:reccommend},
  {path:'rank',component:rank},
  ]
 },
 {
  path: '/mymusic',
  name: 'mymusic',
  component: MyMusic
 }
 ]

6.配置二级导航的<router-link>

<ul class="nav nav-pills">
  <li role="presentation" v-for="(item,index) in guides" :key="index"
   :class="item.id==discovercurrent?'active':''"
  >
   <router-link :to="item.id">{{item.name}}</router-link>
  </li>
  </ul>

这时我们发现我们的二级导航已经出现了

vue-router二级导航切换路由及高亮显示的实现方法

同样,设置当前页面的变量,利用class变量以及三元表达式,实现功能

至此,我们的vue-router实现的二级导航就实现了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
jQuery+CSS 半开折叠效果原理及代码(自写)
Mar 04 Javascript
jQuery中阻止冒泡事件的方法介绍
Apr 12 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
微信小程序  生命周期详解
Oct 27 Javascript
javascript闭包功能与用法实例分析
Apr 06 Javascript
微信小程序 蓝牙的实现实例代码
Jun 27 Javascript
vue项目base64字符串转图片的实现代码
Jul 13 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
js实现随机数小游戏
Jun 28 Javascript
再也不怕 JavaScript 报错了,怎么看怎么处理都在这儿
Dec 09 Javascript
Vue编程式跳转的实例代码详解
Jul 10 #Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
Jul 10 #Javascript
Vue事件修饰符native、self示例详解
Jul 09 #Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 #Javascript
微信小程序wx.request拦截器使用详解
Jul 09 #Javascript
javascript实现图片轮播代码
Jul 09 #Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 #Javascript
You might like
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
PHP如何使用cURL实现Get和Post请求
2020/07/11 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
Bootstrap安装环境配置教程分享
2016/05/27 Javascript
Bootstrap整体框架之CSS12栅格系统
2016/12/15 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
基于iScroll实现内容滚动效果
2018/03/21 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
npx create-react-app xxx创建项目报错的解决办法
2020/02/17 Javascript
Python3实现从指定路径查找文件的方法
2015/05/22 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python实现最大子序和的方法示例
2019/07/05 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
Myprotein芬兰官网:欧洲第一运动营养品牌
2019/05/05 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
机电一体化毕业生求职信
2013/11/02 职场文书
小学数学课后反思
2014/04/23 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
面试感谢信范文
2015/01/22 职场文书
海上钢琴师的观后感
2015/06/11 职场文书
小学四年级班主任工作经验交流材料
2015/11/02 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL