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的递增/递减运算符和带操作的赋值运算符的等价式
Dec 08 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
Extjs 4.x 得到form CheckBox 复选框的值
May 04 Javascript
关于JavaScript命名空间的一些心得
Jun 07 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
jQuery实现两列等高并自适应高度
Dec 22 Javascript
react-router实现按需加载
May 09 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
说说Vue.js中的functional函数化组件的使用
Feb 12 Javascript
微信小程序前端自定义分享的实现方法
Jun 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
用缓存实现静态页面的测试
2006/12/06 PHP
php设计模式 Builder(建造者模式)
2011/06/26 PHP
php取得字符串首字母的方法
2015/03/25 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
快速掌握Node.js事件驱动模型
2016/03/21 Javascript
学习vue.js表单控件绑定操作
2016/12/05 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[01:08:00]Fnatic vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
简单学习Python time模块
2016/04/29 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
python 图片去噪的方法示例
2019/07/09 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
物业管理毕业生个人的求职信
2013/11/30 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
网络营销策划方案
2014/06/04 职场文书
经营理念口号
2014/06/21 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript