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 相关文章推荐
Mootools 1.2教程 定时器和哈希简介
Sep 15 Javascript
ext 同步和异步示例代码
Sep 18 Javascript
jquery 学习之二 属性 文本与值(text,val)
Nov 25 Javascript
jquery Mobile入门—多页面切换示例学习
Jan 08 Javascript
JavaScript实现多种排序算法
Feb 24 Javascript
常用的JQuery函数及功能小结
Mar 24 Javascript
浅析bootstrap原理及优缺点
Mar 19 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
May 03 Javascript
js微信分享实现代码
Oct 11 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
浅谈 JavaScript 沙箱Sandbox
Nov 02 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 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/11/16 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
PHP 判断变量类型实现代码
2009/10/23 PHP
PHP 编程安全性小结
2010/01/08 PHP
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
js转义字符介绍
2013/11/05 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
全面解析Bootstrap中nav、collapse的使用方法
2016/05/22 Javascript
很酷的星级评分系统原生JS实现
2016/08/25 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
使用p5.js临摹动态图形
2019/10/23 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
使用Python实现从各个子文件夹中复制指定文件的方法
2018/10/25 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python如何统计代码运行的时长
2019/07/24 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
Born鞋子官网:Born Shoes
2017/04/06 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
4s店总经理岗位职责
2013/12/31 职场文书
英文感谢信格式
2015/01/21 职场文书
千与千寻观后感
2015/06/04 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
Win11 BitLocker 驱动器加密
2022/04/19 数码科技