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 相关文章推荐
使一个函数作为另外一个函数的参数来运行的javascript代码
Aug 13 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
Feb 16 Javascript
JavaScript加强之自定义callback示例
Sep 21 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
Nov 19 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
Oct 14 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
vue系列之动态路由详解【原创】
Sep 10 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
微信小程序之左右布局的实现代码
Dec 13 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的一个登录的类 [推荐]
2007/03/16 PHP
PHP实时显示输出
2008/10/02 PHP
PHP输出XML到页面的3种方法详解
2013/06/06 PHP
php使用base64加密解密图片示例分享
2014/01/20 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
JS 时间显示效果代码
2009/08/23 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
javascript实现微信分享
2014/12/23 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
javascript中apply、call和bind的使用区别
2016/04/05 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
2018/09/22 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
python3图片文件批量重命名处理
2019/10/31 Python
dpn网络的pytorch实现方式
2020/01/14 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
法国珠宝店:CLEOR
2017/01/29 全球购物
一道SQL面试题
2012/12/31 面试题
颁奖晚会主持词
2014/03/25 职场文书
新娘婚礼致辞
2015/07/27 职场文书