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 相关文章推荐
JQuery动态给table添加、删除行 改进版
Jan 19 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
May 23 Javascript
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
JS中showModalDialog 的使用解析
Apr 17 Javascript
利用js实现遮罩以及弹出可移动登录窗口
Jul 08 Javascript
jQuery ajax调用WCF服务实例
Jul 16 Javascript
Bootstrap和Java分页实例第一篇
Dec 23 Javascript
vue中element组件样式修改无效的解决方法
Feb 03 Javascript
Vue中点击active并第一个默认选中功能的实现
Feb 24 Javascript
vue项目中使用多选框的实例代码
Jul 22 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
Jul 22 Javascript
Echarts如何重新渲染实例详解
May 30 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
js过滤数组重复元素的方法
2010/09/05 Javascript
JavaScript 原型继承
2011/12/26 Javascript
使用angular写一个hello world
2015/01/23 Javascript
jQuery实现网站添加高亮突出显示效果的方法
2015/06/26 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Python实现八大排序算法
2016/08/13 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
2017/01/20 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
出口公司经理求职简历中的自我评价
2013/10/13 职场文书
关于逃课的检讨书
2014/01/23 职场文书
商场促销活动方案
2014/02/08 职场文书
《长城》教学反思
2014/02/14 职场文书
商超业务员岗位职责
2014/03/12 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
上课说话检讨书500字
2014/11/01 职场文书
社区重阳节活动总结
2015/03/24 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
详解Redis复制原理
2021/06/04 Redis
一文带你探究MySQL中的NULL
2021/11/11 MySQL