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 相关文章推荐
转换字符串为json对象的方法详解
Nov 29 Javascript
JQuery中操作Css样式的方法
Feb 12 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
javascript实时获取鼠标坐标值并显示的方法
Apr 30 Javascript
jQuery密码强度检测插件passwordStrength用法实例分析
Oct 30 Javascript
javascript鼠标右键菜单自定义效果
Dec 08 Javascript
最常见的左侧分类菜单栏jQuery实现代码
Nov 28 Javascript
利用n工具轻松管理Node.js的版本
Apr 21 Javascript
jquery.validate表单验证插件使用详解
Jun 21 jQuery
vue.js使用v-model指令实现的数据双向绑定功能示例
May 22 Javascript
angularJs在多个控制器中共享服务数据的方法
Sep 30 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 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高级对象构建 多个构造函数的使用
2012/02/05 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
2017/02/16 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
PHP的介绍以及优势详细分析
2019/09/05 PHP
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
检查表单元素的值是否为空的实例代码
2016/06/16 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
对称加密与非对称加密优缺点详解
2017/02/06 Javascript
本地存储localStorage用法详解
2017/07/31 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
浅谈React高阶组件
2018/03/28 Javascript
原生js实现Flappy Bird小游戏
2018/12/24 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
python 实现倒排索引的方法
2018/12/25 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
python 实现视频 图像帧提取
2019/12/10 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
python实现单机五子棋
2020/08/28 Python
新西兰优惠网站:Treat Me
2019/07/04 全球购物
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
大四自我鉴定
2014/02/08 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
车间质检员岗位职责
2015/04/08 职场文书
学籍证明模板
2015/06/18 职场文书
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript