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的动态语言特性
Jun 17 Javascript
详解JavaScript ES6中的Generator
Jul 28 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
Sep 09 Javascript
浅析Node.js:DNS模块的使用
Nov 23 Javascript
js中toString()和String()区别详解
Mar 23 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
Sep 22 Javascript
js将键值对字符串转为json字符串的方法
Mar 30 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
微信小程序定位当前城市的方法
Jul 19 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
Aug 03 Javascript
JavaScript实现显示和隐藏图片
Apr 29 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入门源程序
2006/10/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
php smarty函数扩展
2010/03/15 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
JavaScript自定义事件介绍
2013/08/29 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
python处理json数据中的中文
2014/03/06 Python
复习Python中的字符串知识点
2015/04/14 Python
Python编程之属性和方法实例详解
2015/05/19 Python
python实现zabbix发送短信脚本
2018/09/17 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
财务审计整改报告
2014/11/06 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
教师节座谈会主持词
2015/07/03 职场文书
教师教育心得体会
2016/01/19 职场文书
Node.js实现断点续传
2021/06/23 Javascript
nginx刷新页面出现404解决方案(亲测有效)
2022/03/18 Servers
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL