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 20 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
Jul 15 Javascript
js页面跳转的常用方法整理
Oct 18 Javascript
Javascript基础教程之while语句
Jan 18 Javascript
纯JavaScript代码实现移动设备绘图解锁
Oct 16 Javascript
Angularjs中使用Filters详解
Mar 11 Javascript
一起学写js Calender日历控件
Apr 14 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
May 06 Javascript
vue使用websocket的方法实例分析
Jun 22 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操作数组相关函数
2011/02/03 PHP
PHP简单日历实现方法
2016/07/20 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
flash javascript之间的通讯方法小结
2008/12/20 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
在Python中使用第三方模块的教程
2015/04/27 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
2017/01/21 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
html5 input输入实时检测以及延时优化
2018/07/18 HTML / CSS
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
几道数据库的概念性面试题
2014/05/30 面试题
会计专业自荐书
2014/07/08 职场文书
迎新生欢迎词
2015/01/23 职场文书
复试通知单模板
2015/04/24 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
详解Django的MVT设计模式
2021/04/29 Python
Python与C++中梯度方向直方图的实现
2022/03/17 Python