Vue 菜单栏点击切换单个class(高亮)的方法


Posted in Javascript onAugust 22, 2018

步骤:

遍历对象(goods)获取菜单栏每一项的对象(item)和下标(index)

添加点击事件toggle(),传入下标参数:@click="fn1();fn2()"

动态切换classname::class="{'active':index ==checkindex }"> (class赋予对应下标值的DOM)

ps:该方法直接切换class,不需要手动添加清除其他非动态DOM的class

html

<ul>
   <li v-for="(item,index) in goods" class="menu-item" @click="toggle(index);scrollToFoods(index)"
   :class="{'active':index ==checkindex }">
   </li>
  </ul>

script

export default {
 data () {
  return {
  checkindex: 0 // 初始化第一个栏块高亮
  }
 },
 methods: {
  toggle (index) {
  this.checkindex = index
  }

css

.active {
 background: white;
 }

效果图展示:

Vue 菜单栏点击切换单个class(高亮)的方法

Vue 菜单栏点击切换单个class(高亮)的方法

拓展知识:浅谈element-ui下导航高亮犯过的错

同事搭建的vue+elementui项目出了个bug,elementui导航高亮一直出错。调试了3个多小时,来问我,结果悲剧地加班了。

最后实在不耐烦了,导航这块放弃使用elementui组件,直接自己来写了。今天有空,实在不服气,自己写了一个。结果直接就过了。

贴上代码:

<template>
 <el-menu
 :default-active="$route.path"
 background-color="#383838"
 text-color="#ccc"
 active-text-color="#fff000" router>
 <el-menu-item index="/dashboard">
  <span slot="title">总览</span>
 </el-menu-item>
 <el-submenu index="2">
  <template slot="title">导航1</template>
  <el-menu-item index="/nav1/index">导航11</el-menu-item>
  <el-submenu index="2-2">
  <template slot="title">导航12</template>
  <el-menu-item index="/nav2/nav1">导航121</el-menu-item>
  <el-menu-item index="/nav2/nav2">导航122</el-menu-item>
  </el-submenu>
 </el-submenu>
 </el-menu>
</template>

后来对比了下细节,发现自己是被同事带坑了:总结当时犯的错误(纠结的地方)

:default-active="$route.path"

这里定义当前高亮。举例:当前页面是总览,通过打印,得知$route.path的值是 '/dashboard' 而不是 'dashboard'。前者是$route.path,后者是$route.name。后续会用到。

router>

这里没什么好说的,直接router就行了。

<el-menu-item index="/dashboard">

这里就要根据前面的$route.path/$route.name来输入值了。保证这三点基本无误导航高亮基本就没问题了。

至于其他花式写法后面会继续研究。

以上这篇Vue 菜单栏点击切换单个class(高亮)的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 选择器引擎sizzle浅析
Feb 06 Javascript
js中widow.open()方法使用详解
Jul 30 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
用box固定长宽实现图片自动轮播js代码
Jun 09 Javascript
javascript自动恢复文本框点击清除后的默认文本
Jan 12 Javascript
谈谈vue中mixin的一点理解
Dec 12 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
Jan 03 Javascript
JavaScript中set与get方法用法示例
Aug 15 Javascript
跨域请求两种方法 jsonp和cors的实现
Nov 11 Javascript
vue组件之间通信实例总结(点赞功能)
Dec 05 Javascript
vue 更改连接后台的api示例
Nov 11 Javascript
Vue.js点击切换按钮改变内容的实例讲解
Aug 22 #Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 #Javascript
vuejs选中当前样式active的实例
Aug 22 #Javascript
详解如何在webpack中做预渲染降低首屏空白时间
Aug 22 #Javascript
基于vue中对鼠标划过事件的处理方式详解
Aug 22 #Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
Aug 22 #Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 #Javascript
You might like
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
javascript radio 联动效果
2009/03/04 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
JS如何将数字类型转化为没3个一个逗号的金钱格式
2014/01/27 Javascript
jQuery根据表单name获取值的方法
2016/05/24 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
面试常见的js算法题
2017/03/23 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
利用React高阶组件实现一个面包屑导航的示例
2020/08/23 Javascript
小程序自定义圆形进度条
2020/11/17 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
Python提取Linux内核源代码的目录结构实现方法
2016/06/24 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
python tornado修改log输出方式
2019/11/18 Python
python numpy数组复制使用实例解析
2020/01/10 Python
python网络编程之五子棋游戏
2020/05/14 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
python中的测试框架
2020/11/13 Python
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
实习公司领导推荐函
2014/05/21 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
十八大标语口号
2014/10/09 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers