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 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
Javascript学习笔记4 Eval函数
Jan 11 Javascript
javascript两段代码,两个小技巧
Feb 04 Javascript
一起来写段JS drag拖动代码
Dec 09 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
May 24 Javascript
js H5 canvas投篮小游戏
Aug 18 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
Aug 23 Javascript
ES6中Class类的静态方法实例小结
Oct 28 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
vue中子组件的methods中获取到props中的值方法
Aug 27 Javascript
vue实现路由切换改变title功能
May 28 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
zend optimizer在wamp的基础上安装图文教程
2013/10/26 PHP
discuz图片顺序混乱解决方案
2015/07/29 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
HTML长文本截取含有HTML代码同样适用的两种方法
2013/07/31 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
总结在前端排序中遇到的问题
2016/07/19 Javascript
Javascript中this绑定的3种方法与比较
2016/10/13 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
jquery仿京东商品放大浏览页面
2017/06/06 jQuery
vue 实现 ios 原生picker 效果及实现思路解析
2017/12/06 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
JS实现普通轮播图特效
2020/01/01 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python中shape计算矩阵的方法示例
2017/04/21 Python
Django使用中间件解决前后端同源策略问题
2019/09/02 Python
pytorch的batch normalize使用详解
2020/01/15 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
pygame实现弹球游戏
2020/04/14 Python
python 实现Harris角点检测算法
2020/12/11 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
石油大学毕业生自荐信
2014/01/28 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
远程教育集中轮训基层干部培训班学习心得体会
2016/01/09 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP
如何打开Win11系统注册表编辑器?Win11注册表编辑器打开修复方法
2022/04/05 数码科技