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 相关文章推荐
JS判断是否为数字,是否为整数,是否为浮点数的代码
Apr 24 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
May 24 Javascript
jquery判断checkbox(复选框)是否被选中的代码
Oct 20 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
AngularJS实现表单验证
Jan 28 Javascript
AngularJS自动表单验证
Feb 01 Javascript
JavaScript中各种引用类型的常用操作方法小结
May 05 Javascript
利用jquery获取select下拉框的值
Nov 23 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
Jan 23 Javascript
vue-cli中的webpack配置详解
Sep 25 Javascript
vue生命周期与钩子函数简单示例
Mar 13 Javascript
element-ui封装一个Table模板组件的示例
Jan 04 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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
Yii2如何批量添加数据
2016/05/17 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
javascript根据像素点取位置示例
2014/01/27 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
如何HttpServletRequest文件对象并储存
2020/08/14 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
python定时检查启动某个exe程序适合检测exe是否挂了
2013/01/21 Python
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python使用metaclass实现Singleton模式的方法
2015/05/05 Python
python实现合并两个数组的方法
2015/05/16 Python
python web基础之加载静态文件实例
2018/03/20 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python得到电脑的开机时间方法
2018/10/15 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
python实现简单加密解密机制
2019/03/19 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
pytorch实现mnist分类的示例讲解
2020/01/10 Python
python线程join方法原理解析
2020/02/11 Python
python能开发游戏吗
2020/06/11 Python
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
幼儿园园长个人总结
2015/03/02 职场文书
借款民事起诉状范文
2015/05/19 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server
python 离散点图画法的实现
2022/04/01 Python