位置: IT常识 - 正文

Vue中二级菜单的实现(vue二级菜单的隐藏与显示)

编辑:rootadmin
Vue中二级菜单的实现

推荐整理分享Vue中二级菜单的实现(vue二级菜单的隐藏与显示),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue二级菜单功能,vue二级下拉导航栏,vue层级菜单,vue二级菜单栏实现,vue二级菜单功能,vue二级菜单的隐藏与显示,vue下拉二级子菜单怎么实现,vue二级菜单的隐藏与显示,内容如对您有帮助,希望把文章链接给更多的朋友!

在不使用ElementUi等框架的情况下,制作一个二级菜单,网上搜寻很多资料,但部分要不只显示HTML结构,不显示CSS样式,要不就是复杂的让人无法理解。

效果图:

针对菜单做了CSS样式修饰,给一级二级菜单都添加了鼠标悬浮事件,当悬浮到某个菜单时,背景颜色,字体颜色发生改变。当点击某个一级菜单时,二级菜单实现显示和隐藏的动态切换。

菜单的HTML结构:<div class="nav">--------------------一级菜单------------------<ul><liv-for="item in menus":key="item.id"@click="changeCheck(item.id)":class="{ check: currentTag == item.path }"class="mainMenu"><router-link:to="{name:item.path,params:userName}"class="mainA"@click.native="TabName(item.title)">{{ item.title }}</router-link>------------------二级菜单----------------------<ul v-if="item.children && item.active"><liclass="subMneu"v-for="(child, index) in item.children":key="index"@click="clickSubMenu(item,child.title)"><router-linkclass="menuB":to="{name:child.path,params:userName}":class="{ menu_active: child.active }">{{ child.title }}</router-link></li></ul></li></ul></div>代码分析:

针对菜单采用的是ul列表,然后采用v-for循环对菜单数据进行循环,菜单采用的是动态样式 : class

当点击菜单的path地址和菜单中的某个path相等时,动态渲染该样式。

li包含<router-link>是为了当点击该菜单时,跳转到相应的内容

菜单的JS代码:Vue中二级菜单的实现(vue二级菜单的隐藏与显示)

data( )函数数据:

export default {components: {},data() {return {menus: [{ id: 1, title: "用户管理", path: "UserMannger", active: false },{id: 2,title: "商品管理",path: "goodsManger",active: false,children: [{ id: 21, title: "增加商品", path: "addGoods", active: false },],},{ di: 3, title: "关于我们", path: "about", active: false },],currentTag: "",tabName: "",flag2: true,// tabName:'用户管理',userName:''};},

JS代码

methods: {changeCheck(id) {const obj = this.menus.find((item) => item.id == id);this.menus.find((item) => {if (item.id == id) {item.active = !item.active;if (item.children) {item.children.active = !item.active;}}});this.currentTag = obj.path;},clickSubMenu(main,val) {this.tabName = valmain.children[0].active = !main.children[0].activemain.active = !main.children[0].active;},backHome() {this.$router.push("/UserMannger/123");},getLogin2(val){this.userName = val},TabName(val){console.log(val);this.tabName = val}},created() {this.$bus.$on('toHome',this.getLogin2)},};

方法中 changeCheck函数分析:

首先先接收点击菜单的id,对menus数字进行遍历,当id相同时,将该菜单的active属性进行动态改变,这样做是为了动态切换样式。在遍历中还要对子菜单进行判断,如果有子菜单则将该子菜单的active属性改变

方法中 clickSubMneu函数分析:

因为该方法是当点击子菜单触发此事件,触发事件时传入该子菜单的一级菜单,然后将该菜单的子菜单的active属性进行动态改变,并且将主菜单的active属性始终与子菜单保持相反。

因为这里只设置了一个子菜单所以下标为0,当需要设置多个子菜单时,还需要传入index和子菜单的index然后进行判断方法和对一级菜单的判断相同。

CSS代码当点击子菜单的a标签的公共样式.menu_active {color: red;display: block;width: 100%;text-decoration: none;color: rgb(255, 208, 75);background-color: #409eff;}菜单修饰.nav {height: 100%;flex-grow: 1;background-color: #001529;ul {.mainMenu {margin-top: 20px;width: 100%;text-align: center;line-height: 50px;color: white;.mainA {display: block;width: 100%;text-decoration: none;color: white;&:hover {background-color: #409eff;}&:active {color: rgb(255, 208, 75);}}}}}

这里采用的SCSS预编译语言:

在菜单css修饰中需要注意的是,一定要给一级菜单和二级菜单起名字,即使scss能够嵌套,依然会发生样式穿透的bug,所以针对一级菜单和二级菜单的样式进行单独修饰。

这里还需要知道的是 scss中有 :active和 : hover 的伪类用法,前者是当点击时触发该样式,后者是鼠标悬浮时触发的样式。

本文链接地址:https://www.jiuchutong.com/zhishi/294564.html 转载请保留说明!

上一篇:promise和async用法及区别(详解)(promise async区别)

下一篇:uniapp实现微信支付、支付宝支付(uniapph5微信支付)

  • QQ群如何拉人,加群方法,不被T出群的技巧(QQ群如何拉人进去)

    QQ群如何拉人,加群方法,不被T出群的技巧(QQ群如何拉人进去)

  • 米家app怎样使用无感添加功能(米家app怎样使用电视)

    米家app怎样使用无感添加功能(米家app怎样使用电视)

  • 华为p50怎么拍月亮(华为p50怎么拍月亮参数)

    华为p50怎么拍月亮(华为p50怎么拍月亮参数)

  • pcnm00是oppo哪个型号(oppopcnm00是什么型号手机)

    pcnm00是oppo哪个型号(oppopcnm00是什么型号手机)

  • 微信指纹支付自动关闭的原因(微信指纹支付自动变密码支付)

    微信指纹支付自动关闭的原因(微信指纹支付自动变密码支付)

  • 苹果x原彩显示不见了(苹果x原彩显示在哪里)

    苹果x原彩显示不见了(苹果x原彩显示在哪里)

  • 十进制数32转换成无符号二进制整数是(十进制数32转换成二进制数)

    十进制数32转换成无符号二进制整数是(十进制数32转换成二进制数)

  • 抖音等级前面有个话筒是什么意思(抖音等级前面有太阳是什么)

    抖音等级前面有个话筒是什么意思(抖音等级前面有太阳是什么)

  • 11pro max充电器是快充吗(11promax原装充电器多少w)

    11pro max充电器是快充吗(11promax原装充电器多少w)

  • 小新锐龙版和英特尔版有什么区别(小新锐龙版和英特尔版哪个好)

    小新锐龙版和英特尔版有什么区别(小新锐龙版和英特尔版哪个好)

  • qq加群失败什么意思(qq加群不成功)

    qq加群失败什么意思(qq加群不成功)

  • 苹果7plus用起来不流畅(苹果7plus运行速度慢怎么办)

    苹果7plus用起来不流畅(苹果7plus运行速度慢怎么办)

  • 怎么下载优酷视频到手机(怎么下载优酷视频?)

    怎么下载优酷视频到手机(怎么下载优酷视频?)

  • 大王卡斗鱼免流量吗(大王卡斗鱼免流量吗?)

    大王卡斗鱼免流量吗(大王卡斗鱼免流量吗?)

  • 台式电脑可以连接蓝牙音响吗(台式电脑可以连手机热点吗怎么连)

    台式电脑可以连接蓝牙音响吗(台式电脑可以连手机热点吗怎么连)

  • tlc跟mlc的差别(tlc和mlc如何区别)

    tlc跟mlc的差别(tlc和mlc如何区别)

  • 手机爱奇艺看不到字幕怎么办(手机爱奇艺看不到弹幕)

    手机爱奇艺看不到字幕怎么办(手机爱奇艺看不到弹幕)

  • 滴滴人脸识别怎么绕过(滴滴人脸识别怎么更改)

    滴滴人脸识别怎么绕过(滴滴人脸识别怎么更改)

  • 如何设置电脑远程登录(如何设置电脑远程控制)

    如何设置电脑远程登录(如何设置电脑远程控制)

  • 探探vip有什么功能(探探vip有什么功能可以隐身吗)

    探探vip有什么功能(探探vip有什么功能可以隐身吗)

  • oppo手机pcam00是什么型号(oppo手机型号pcem00是什么价位)

    oppo手机pcam00是什么型号(oppo手机型号pcem00是什么价位)

  • 360手机怎么强制开机(360手机怎么双清)

    360手机怎么强制开机(360手机怎么双清)

  • 快手会留下访客记录吗(快手会留下访客记录什么时候)

    快手会留下访客记录吗(快手会留下访客记录什么时候)

  • 小米8se有nfc吗(小米8se支不支持nfc)

    小米8se有nfc吗(小米8se支不支持nfc)

  • 华为手机放大镜怎么开(华为手机放大镜怎么取消设置功能)

    华为手机放大镜怎么开(华为手机放大镜怎么取消设置功能)

  • 小米8如何隐藏刘海屏(小米8如何隐藏应用软件图标)

    小米8如何隐藏刘海屏(小米8如何隐藏应用软件图标)

  • 个人所得税手续费返还增值税税率
  • 发票勾选认证必须对应当期成本吗
  • 税负转嫁的概念是什么
  • 税务局三师有什么用
  • 股权转让给个人和公司的区别
  • 收到存款利息怎么写分录
  • 资产负债表上应付账款根据什么填制
  • 2019年1月份到现在几个月了
  • 公司买大米怎么做账
  • 增值税发票丢了怎么办?
  • 分期收款销售会计分录(现销)
  • 注销时其他应付款余额怎么账务处理
  • 购买财务软件账务处理规定
  • 一般纳税人增值税可以抵扣吗
  • 月初发票认证能抵扣吗
  • 增值税发票地址变更后开原来的地址能用吗
  • 固定资产丢失收据怎么写
  • 个税没有扣除项,需要填写和确认吗
  • 这个月发票领完了,还可以领吗?
  • 当期免抵税额和当期留抵税额
  • 事业单位固定资产报废处置流程
  • 运费营改增时间
  • 纳税人享受增值服务
  • 收到总公司拨款发奖金如何入账
  • 鸿蒙系统桌面布局图片怎么设置
  • 个人所得税到年底能不能退回来
  • 飞机票开电子发票是电子行程单吗
  • 定额发票属于什么会计
  • 扣发工资可以要赔偿吗
  • linux系统已经得到了广泛的应用
  • 土地增值税预缴税率表
  • 单位房转卖
  • php中文出现乱码
  • 座头鲸救人
  • 前端解决浏览器跨域问题
  • 前端如何适配移动端
  • Apsara Clouder云计算技能认证
  • vuex状态丢失
  • 单元测试的测试工具
  • 功能强大的php文件有哪些
  • 如何更改telnet端口
  • 工会经费可以发购物卡吗
  • phpcms默认密码
  • 工资是负数怎么办
  • 小规模纳税人纳多少税
  • sqlserver数据库指定目录
  • 房产税的纳税义务人是征税范围内房屋产权所有人
  • 暂估的原材料用不用记原材料明细账
  • 成本类科目会结转到损益类科目吗?
  • 核定征收适用于什么税率
  • 多计的人工成本怎么做账
  • 交通运输业营改增
  • 已入库的原材料会计分录
  • 进项发票可以退税吗
  • 进项税额转出的分录怎么做
  • 小规模纳税人劳务派遣差额征税税率
  • 个体工商怎么申报
  • mysql怎么复制粘贴语句
  • sql server 2005如何使用
  • Win10预览版拆弹
  • vmware虚拟机激活码
  • CentOS 7.0.1406 正式版发布(附CentOS7下载地址)
  • windows7问题解决方案
  • 苹果Mac系统怎么安装
  • win8.1网络不可用怎么办
  • win8对机械硬盘不友好
  • win7怎样禁用无线网络连接
  • win7 win8.1双系统安装教程
  • Cocos2d之CCScene