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插件 easyUI属性汇总
Jan 19 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
JS判断对象是否存在的10种方法总结
Dec 23 Javascript
[原创]推荐10款最热门jQuery UI框架
Aug 19 Javascript
node.js中的fs.rmdirSync方法使用说明
Dec 16 Javascript
Javascript中Array用法实例分析
Jun 13 Javascript
jQuery中 delegate使用的问题
Jul 03 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
简单聊聊TypeScript只读修饰符
Apr 06 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
全国FM电台频率大全 - 1 北京市
2020/03/11 无线电
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php变量范围介绍
2012/10/15 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
2015/03/26 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
angular2使用简单介绍
2016/03/01 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
Python中有趣在__call__函数
2015/06/21 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
python中文分词,使用结巴分词对python进行分词(实例讲解)
2017/11/14 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
使用Python实现画一个中国地图
2019/11/23 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
养殖行业的创业计划书
2014/01/05 职场文书
个人简历中的自我评价怎么写
2014/01/26 职场文书
暑期研修感言
2014/02/17 职场文书
工会主席事迹材料
2014/06/03 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
三好生演讲稿
2014/09/12 职场文书
九一八事变演讲稿范文
2014/09/14 职场文书
婚庆答谢词大全
2015/09/29 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
Win7/8.1用户可以免费升级到Windows 11系统吗?
2021/11/21 数码科技