vuejs 切换导航条高亮(路由菜单高亮)的方法示例


Posted in Javascript onMay 29, 2018

我的GitHub前端经验总结,喜欢的话请点star:Thanks.: https://github.com/liangfengbo/frontend-develop

vuejs导航条高亮我的做法:

  1. 用一个数组存导航条,用v-for循环它,这样可以减少代码,二可以使用它的下标来判断高亮,三还可以获取后端的导航信息来遍历
  2. 重点是在:routerLink(index, path)函数,传入当前点击的下标,自定义一个下标,判断是否相等就用三元符号判断多给一个高亮样式
  3. 如何解决刷新就不高亮或第一个高亮了,很简单,监听一下当前路由在判断就好了

具体代码都在下面了

效果图:

vuejs 切换导航条高亮(路由菜单高亮)的方法示例

html代码

<div class="nav-box">

<!-- 导航列表 -->
<li class="nav-item"
 v-for="(item, index) in nav"
 @click="routerLink(index, item.path)"
 :key="index">
 <!-- 判断高亮表 -->
 <p :class=" navIndex === index ? 'item-cn item-cn-active' : 'item-cn'">
 {{ item.title }}
 </p>
 <!-- 判断高亮表 -->
 <p :class="navIndex === index ? 'item-en item-en-active' : 'item-en'">
 {{ item.en }}
 </p>
</li>
</div>

data数据

// 导航条
data() {
 return {
 nav: [
  {title: '首页', en: 'Code', path: '/'},
  {title: '开源', en: 'Source', path: '/source'},
  {title: '关于', en: 'About', path: '/about'},
 ],
 navIndex: 0,
 }
},

methods方法:

/**
 * 路由跳转
 * @param index
 * @param link
*/
routerLink(index, path) {
 // 点击哪个路由就赋值给自定义的下下标
 this.navIndex = index;
 // 路由跳转
 this.$router.push(path)
},

/**
 * 检索当前路径
 * @param path
*/
checkRouterLocal(path) {
 // 查找当前路由下标高亮
 this.navIndex = this.nav.findIndex(item => item.path === path);
}

监听路由变化获取当前路由

watch: {
 "$route"() {
 // 获取当前路径
 let path = this.$route.path;
 // 检索当前路径
 this.checkRouterLocal(path);
 }
},

css样式

.nav-box {
 display: flex;
}

.nav-item {
 text-align: center;
 padding: 0 32px;
 position: relative;
 display: inline-block;
 font-size: 14px;
 line-height: 25px;
}

/*导航普通状态*/
.item-cn {
 color: #1c2438;
 font-weight: 800;
}

/*导航普通状态*/
.item-en {
 color: #666;
 font-size: 12px;
}

/*导航高亮*/
.item-cn-active {
 color: #2d8cf0;
}

/*导航高亮*/
.item-en-active {
 color: #5cadff;
}

.nav-item:hover .item-cn {
 color: #2d8cf0;
}

.nav-item:hover .item-en {
 color: #5cadff;
}

.nav-item:after {
 position: absolute;
 right: 0;
 top: 20px;
 content: '';
 width: 1px;
 height: 16px;
 background-color: #f8f8f8;
}

.nav-item:after:last-child {
 width: 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
自动生成文章摘要的代码[JavaScript 版本]
Mar 20 Javascript
让任务管理器中的CPU跳舞的js代码
Nov 01 Javascript
js字符串完全替换函数分享
Dec 03 Javascript
深入浅析javascript中的作用域(推荐)
Jul 19 Javascript
Backbone中View之间传值的学习心得
Aug 09 Javascript
详解百度百科目录导航树小插件
Jan 08 Javascript
微信小程序选择图片和放大预览图片功能
Nov 02 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
Aug 20 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
Vuex的各个模块封装的实现
Jun 05 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 18 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 #Javascript
Vue 全局loading组件实例详解
May 29 #Javascript
详解vue-cli 本地开发mock数据使用方法
May 29 #Javascript
详解vue-cli项目中怎么使用mock数据
May 29 #Javascript
js统计页面上每个标签的数量实例代码
May 29 #Javascript
浅谈React的最大亮点之虚拟DOM
May 29 #Javascript
深入理解Vue Computed计算属性原理
May 29 #Javascript
You might like
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP中基本符号及使用方法
2010/03/23 PHP
php缓冲 output_buffering的使用详解
2013/06/13 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
深入学习AngularJS中数据的双向绑定机制
2016/03/04 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
详解微信小程序Page中data数据操作和函数调用
2017/09/27 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
js+css3实现炫酷时钟
2020/08/18 Javascript
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python编程之序列操作实例详解
2017/07/22 Python
python和opencv实现抠图
2018/07/18 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
Python3之手动创建迭代器的实例代码
2019/05/22 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
django 捕获异常和日志系统过程详解
2019/07/18 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
python正则过滤字母、中文、数字及特殊字符方法详解
2020/02/11 Python
keras打印loss对权重的导数方式
2020/06/10 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
志愿者服务感言
2014/02/27 职场文书
亚运会口号
2014/06/20 职场文书
初中同学会活动方案
2014/08/22 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
警示教育观后感
2015/06/17 职场文书
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android