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 相关文章推荐
sina的lightbox效果。
Jan 09 Javascript
JavaScript 计算当天是本年本月的第几周
Mar 22 Javascript
jQuery获取节点和子节点文本的方法
Jul 22 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
JavaScrip常见的一些算法总结
Dec 28 Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
Aug 02 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
Sep 18 Javascript
微信小程序之圆形进度条实现思路
Feb 22 Javascript
js实现每日签到功能
Nov 29 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
Jan 15 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
php学习之 循环结构实现代码
2011/06/09 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
2015/03/17 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js 键盘记录实现(兼容FireFox和IE)
2010/02/07 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
mailto的使用技巧分享
2012/12/21 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
JSONP原理及简单实现
2016/06/08 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
vue2的todolist入门小项目的详细解析
2017/05/11 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
Django的分页器实例(paginator)
2017/12/01 Python
Python简单计算数组元素平均值的方法示例
2017/12/26 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
Python如何对齐字符串
2020/07/30 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
白俄罗斯大卖场:21vek.by
2019/07/25 全球购物
应届生财务会计求职信
2013/11/05 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python
tomcat默认最大连接数及相关调整方法
2022/05/06 Servers
解决Oracle数据库用户密码过期
2022/05/11 Oracle