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 相关文章推荐
发布BlueShow v1.0 图片浏览器(类似lightbox)blueshow.js 打包下载
Jul 21 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
May 08 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
JS实现环形进度条(从0到100%)效果
Jul 05 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
微信小程序自定义组件之可清除的input组件
Jul 17 Javascript
layui在form表单页面通过Validform加入简单验证的方法
Sep 06 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
Dec 20 Javascript
原生JavaScript实现进度条
Feb 19 Javascript
Nest.js散列与加密实例详解
Feb 24 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对数组排序代码分享
2014/02/24 PHP
PHP解析RSS的方法
2015/03/05 PHP
PHP实现简易blog的制作
2016/10/24 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
2010/12/03 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
IE11下处理Promise及Vue的单项数据流问题
2019/07/24 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
jquery实现穿梭框功能
2021/01/19 jQuery
Python内置函数的用法实例教程
2014/09/08 Python
python中base64加密解密方法实例分析
2015/05/16 Python
Python自动扫雷实现方法
2015/07/25 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
生物科学专业个人求职信范文
2013/12/05 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
课程设计的心得体会
2014/09/03 职场文书
行政申诉状范文
2015/05/20 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书
关于分班的感言
2015/08/04 职场文书
国庆节主题班会
2015/08/15 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
Python初学者必备的文件读写指南
2021/06/23 Python
python 安全地删除列表元素的方法
2022/03/16 Python
MySQL分区表管理命令汇总
2022/03/21 MySQL