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在网页中实现分隔条功能的代码
Aug 09 Javascript
js+数组实现网页上显示时间/星期几的实用方法
Jan 18 Javascript
javascript按位非运算符的使用方法
Nov 14 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
Nov 28 Javascript
12306验证码破解思路分享
Mar 25 Javascript
jQuery实现返回顶部效果的方法
May 29 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
vue实现商城购物车功能
Nov 27 Javascript
Vue 实现树形视图数据功能
May 07 Javascript
vue2.0父子组件间传递数据的方法
Aug 16 Javascript
vue 根据选择条件显示指定参数的例子
Nov 09 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 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 flush()与ob_flush()的区别详解
2013/06/03 PHP
JS 统计时间
2021/03/09 Javascript
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
jQuery 学习入门篇附实例代码
2010/03/16 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
jquery无缝图片轮播组件封装
2020/11/25 jQuery
p5.js实现动态图形临摹
2019/10/23 Javascript
python字符串连接方式汇总
2014/08/21 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python3生成手写体数字方法
2018/01/30 Python
python opencv之SIFT算法示例
2018/02/24 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
python实现浪漫的烟花秀
2019/01/30 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python实现猜拳小游戏
2020/04/05 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
python常用运维脚本实例小结
2020/02/14 Python
美国电视购物:QVC
2017/02/06 全球购物
意大利在线大学图书馆:Libreria universitaria
2019/07/16 全球购物
应届毕业生个人自荐信范文
2013/11/30 职场文书
关于读书的演讲稿
2014/05/07 职场文书
企业人事任命书
2014/06/05 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
驻村工作简报
2015/07/20 职场文书
小学课改工作总结
2015/08/13 职场文书
学习计划是什么
2019/04/30 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis