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 相关文章推荐
web css实现整站样式互相切换
Oct 29 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
Jun 12 Javascript
jquery与ajax获取特殊字符实例详解
Jan 08 Javascript
详解基于webpack和vue.js搭建开发环境
Apr 05 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
Sep 11 Javascript
基于复选框demo(分享)
Sep 27 Javascript
Vue组件之单向数据流的解决方法
Nov 10 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
Aug 10 Javascript
对vue生命周期的深入理解
Dec 03 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
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
短波的认识
2021/03/01 无线电
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
浅谈关于axios和session的一些事
2017/07/13 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python中__repr__和__str__区别详解
2019/11/07 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
2013/04/07 面试题
售后服务承诺书
2014/03/26 职场文书
四下基层实施方案
2014/03/28 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
文明之星事迹材料
2014/05/09 职场文书
师德师风的心得体会
2014/09/02 职场文书
工作总结与自我评价
2014/09/18 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers