位置: IT常识 - 正文

Vue3点击侧边导航栏完成切换页面内组件(WEB)(vue侧边栏导航,右侧显示对应内容)

编辑:rootadmin
Vue3点击侧边导航栏完成切换页面内组件(WEB)

推荐整理分享Vue3点击侧边导航栏完成切换页面内组件(WEB)(vue侧边栏导航,右侧显示对应内容),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue实现侧边栏导航滑动,vue侧边菜单,vue导航栏点击选中状态,vue侧边栏导航,右侧显示对应内容,vue点击侧边栏进行内容切换,vue点击侧边栏进行内容切换,vue侧边菜单栏导航,vue实现侧边导航栏,内容如对您有帮助,希望把文章链接给更多的朋友!

Vue3点击侧边导航栏完成切换页面组件

目录效果思路过程获取当前点击DOM并添加点击class将其它的导航未点击项isclick样式类去除完整代码导航代码显示页面代码路由设置感谢效果

点击左侧导航,右面页面切换。

思路

使用router-view显示点击后需要切换的组件,需要先完成网页的结构。侧面导航 + 页面显示部分 如: 设置一个class属性,点击元素时给当前元素额外添加一个class类。给导航中每个点击项添加上点击事件,当点击当前项时其它项的class变成原本的,当前元素添加一个当前点击的class类,而组件切换则由router完成,使用router-link to 完成路由路径切换。 当前点击模式类代码:

.isclick {background: #e9feff;color: #0bbfbc;}过程获取当前点击DOM并添加点击class

这里需要注意,触发事件的元素对象(不一定是绑定事件的对象,会因为事件冒泡变化),所以我们需要获取绑定事件的元素对象。

$event:当前触发的是什么事件 $event.target:触发事件的元素对象(不一定是绑定事件的对象) $event.currentTarget:绑定事件的元素对象

此处需要使用: e.currentTarget

Vue3点击侧边导航栏完成切换页面内组件(WEB)(vue侧边栏导航,右侧显示对应内容)

改变选中元素的class: e.currentTarget.className = ‘nav-item isclick’ 其中nav-item为未点击时的navitem样式类,isclick为点击后更改的样式类,原来样式只有一个nav-item,再添加一个isclick。

将其它的导航未点击项isclick样式类去除

得到点击项的其它兄弟节点

var domList = e.currentTarget.parentNode.children

parentNode 是得到父节点 children 是得到子节点 当前元素的父节点的所有子节点,是一个列表

将所有节点的点击样式类去除

for(let d=0;d<domList.length;d++){domList[d].className = 'nav-item'}

遍历当前所有节点的兄弟节点,并修改class。

完整代码导航代码

导航组件代码:

<template><div class="nav"><ul><li v-for="item in NavList" class="nav-item" @click="clickNav($event)"><div><img class="nav-icon" :src="item.icon" width="20px" height="20px" alt="sy" /><router-link :to="item.url">{{item.title}}</router-link></div></li></ul><div class="nav-img-box" style="margin-top: 108px;"><img src="@/assets/装饰图.png" alt="zs" /></div></div></template><script setup>import { ref,reactive } from 'vue'var NavList = reactive([{title: "合作伙伴",url: "/partner",icon: require("@/assets/首页-选中.png")},{title: "客户列表",url: "/customer",icon: require("@/assets/客户列表.png")},{title: "订单列表",url: "/order",icon: require("@/assets/财务列表.png")},{title: "物料列表",url: "/materials",icon: require("@/assets/标签列表.png")},{title: "成员管理",url: "/corpuser",icon: require("@/assets/员工列表.png")},{title: "收益概览",url: "/income",icon: require("@/assets/员工列表.png")},{title: "价格配置",url: "/price",icon: require("@/assets/员工列表.png")},{title: "系统设置",url: "/setting",icon: require("@/assets/员工列表.png")}])function clickNav(e) {var domList = e.currentTarget.parentNode.childrenfor(let d=0;d<domList.length;d++){domList[d].className = 'nav-item'}console.log('点击',e.currentTarget)e.currentTarget.className = 'nav-item isclick'}</script><style scoped>li {list-style-type: none;}a {text-decoration: none;color: #39475A;}.nav {width: 200px;height: 100%;background: #FFFFFF;box-shadow: 3px 0px 6px 0px rgba(82, 82, 82, 0.14);}.nav ul {margin-top: 32px;padding: 0;}.nav-item {width: 200px;height: 46px;font-family: PingFangSC-Medium;font-size: 16px;color: #39475A;letter-spacing: 0;line-height: 46px;font-weight: 500;}.nav-item div {margin-left: 17px;height: 46px;line-height: 46px;}.nav-item div img {width: 20px;height: 20px;}.nav-icon {vertical-align: middle;margin-right: 7px;padding-bottom: 6px;}.isclick {background: #e9feff;color: #0bbfbc;}.nav-img-box img {width: 200px;height: 416px;}</style>

代码中的icon: require(“@/assets/员工列表.png”)为导航图标,需要注意,如果不用require,直接写图片的地址的话可能出现无法找到图片的问题,图片的地址在html中使用时会被转码,出现类似%E9%A6%96%E9%A1%B5-%E9%80%89%E4%B8%AD.png的情况。

显示页面代码<template> <div class="page-body"> <PageNav></PageNav> <router-view /> </div> <div class="bottom"> <PageBottom></PageBottom> </div></template><script setup>import PageNav from "@/components/PageNav"import PartnerView from "@/views/PartnerView"import PageBottom from "@/components/PageBottom.vue"</script><style scoped>.page-body { display: flex;}</style>

其中PageNav为前面的导航代码

路由设置

router.js中代码如下

import { createRouter, createWebHistory } from 'vue-router'import PartnerView from '../views/PartnerView.vue'import CustomerView from '../views/CustomerView.vue'import OrderView from '@/views/OrderView'import MaterialsView from '../views/MaterialsView'import CorpUserView from '@/views/CorpUserView'import InComeView from '@/views/InComeView'import PriceView from '@/views/PriceView'import SettingView from '@/views/SettingView'const routes = [ { path: '/', name: 'index', component: PartnerView, redirect: 'partner', }, { path: '/partner', name: 'partner', component: PartnerView }, { path: '/customer', name: 'customer', component: CustomerView }, { path: '/order', name: 'order', component: OrderView }, { path: '/materials', name: 'materials', component: MaterialsView }, { path: '/corpuser', name: 'corpuser', component: CorpUserView }, { path: '/income', name: 'income', component: InComeView }, { path: '/price', name: 'price', component: PriceView }, { path: '/setting', name: 'setting', component: SettingView }]const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes})export default router感谢

以上,仅记录自己的解决办法,如您有更好的思路,欢迎在评论区留言 感谢点赞,如有帮助可以帮忙收藏关注,感谢!

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

上一篇:渐进式 Web 应用程序介绍(渐进模式的特点)

下一篇:中科院ChatGPT Academic开源安装使用过程中的网络代理问题(中科院院士2023增选)

  • 苹果微信边写边译怎么打开(苹果微信边写边写怎么弄)

    苹果微信边写边译怎么打开(苹果微信边写边写怎么弄)

  • forest专注森林怎么改成中文(forest专注森林怎么看自己在哪个服务器)

    forest专注森林怎么改成中文(forest专注森林怎么看自己在哪个服务器)

  • 快手的查找功能不见了怎么办(快手的查找功能在哪里)

    快手的查找功能不见了怎么办(快手的查找功能在哪里)

  • iphone11双击锁屏怎么设置(iphone11双击屏幕锁屏不用辅助触控)

    iphone11双击锁屏怎么设置(iphone11双击屏幕锁屏不用辅助触控)

  • 华为怎么隐藏图标(华为怎么隐藏图库里的图片)

    华为怎么隐藏图标(华为怎么隐藏图库里的图片)

  • k620显卡相当于gtx(k620显卡相当于什么级别的n卡)

    k620显卡相当于gtx(k620显卡相当于什么级别的n卡)

  • vivox30手机视频的时候怎么开美颜(vivox30手机视频美颜功能在哪)

    vivox30手机视频的时候怎么开美颜(vivox30手机视频美颜功能在哪)

  • 华为手机为什么不能安装软件了(华为手机为什么变成黑白屏了)

    华为手机为什么不能安装软件了(华为手机为什么变成黑白屏了)

  • 路由器刷梅林什么意思(路由器刷梅林是什么)

    路由器刷梅林什么意思(路由器刷梅林是什么)

  • 微信销号后聊天记录还有吗(微信销号后聊天记录法院能查到吗)

    微信销号后聊天记录还有吗(微信销号后聊天记录法院能查到吗)

  • 手机定时开关机对手机有影响吗(手机定时开关机怎么设置)

    手机定时开关机对手机有影响吗(手机定时开关机怎么设置)

  • qq管理员怎么禁言(qq管理员怎么禁言一个人)

    qq管理员怎么禁言(qq管理员怎么禁言一个人)

  • ppt2010默认视图是哪种

    ppt2010默认视图是哪种

  • oppo手机呼吸灯设置(OPPO手机呼吸灯一直闪)

    oppo手机呼吸灯设置(OPPO手机呼吸灯一直闪)

  • 如何删除荣耀自带软件(荣耀手机如何删除)

    如何删除荣耀自带软件(荣耀手机如何删除)

  • 华为是什么系统(华为用的什么系统)

    华为是什么系统(华为用的什么系统)

  • 怎么用微信发大文件(怎么用微信发大于1g的文件)

    怎么用微信发大文件(怎么用微信发大于1g的文件)

  • 华为备份恢复在哪找(华为备份恢复在哪里)

    华为备份恢复在哪找(华为备份恢复在哪里)

  • 怎么制作腾讯视频短片(怎么制作腾讯视频会议)

    怎么制作腾讯视频短片(怎么制作腾讯视频会议)

  • 手机电子邮箱在哪里(手机电子邮箱格式)

    手机电子邮箱在哪里(手机电子邮箱格式)

  • 电脑怎么设置色盲症颜色滤镜? win10系统颜色滤镜的开启方法(电脑怎么设置色盲模式)

    电脑怎么设置色盲症颜色滤镜? win10系统颜色滤镜的开启方法(电脑怎么设置色盲模式)

  • 小黑马系统重装大师一键重装win7系统图文教程(小黑马下载)

    小黑马系统重装大师一键重装win7系统图文教程(小黑马下载)

  • 广告费和业务宣传费的区别是什么
  • 超市小票能否入库
  • 国家相关规定出车补助的文件
  • 可供出售金融资产是指什么
  • 企业所得税中管理费用怎么填列
  • 企业破产的费用的承担
  • 影视公司招演员
  • 收到政府中小企业发票
  • 公司每年都要纳税吗?
  • 一个公司可以有几个公章
  • 中国工商银行社保查询
  • 小规模纳税人申报表2023年怎么填写
  • 一般企业的会计原始凭证有哪些类型
  • 交社保公积金需要劳动合同吗
  • 增资溢价率
  • 出租设备的折旧计入哪个科目
  • 政府授权国企为基建项目建设单位
  • 为什么网页总是跳掉
  • 差额征收单位所需材料
  • win10系统如何更改工作组
  • php获取信息
  • 用约当产量法怎么计算约当总产量
  • echart怎么用
  • explore.exe
  • 最大交易笔数什么意思
  • 新车事故报废后保险公司赔多少
  • 从事广告代理业工作
  • 餐饮类发票
  • 即征即退增值税账务处理
  • 出口退税率的调整方法
  • 如何通过手机号码查对方在哪里
  • PHP:imagecolorsforindex()的用法_GD库图像处理函数
  • 烟花绽放的除夕夜题目
  • php全局变量和局部变量
  • 客户端调用axis1.4的方式
  • el-switch右对齐
  • 前端项目实战教程
  • jwt 鉴权
  • 收入调节方式有哪三种
  • 小规模纳税人能开6%增值税专用发票吗
  • 预收账款未发货会计分录
  • sqlserver创建临时表语句
  • 用友t3系统功能怎么用
  • 专用红字发票如何开具
  • 涉及无形资产的会计处理
  • 加班打车费用计入什么科目
  • 利润总额包括什么项目
  • 股权转让可行性
  • 物流公司贷款
  • 教育协会颁发的证书有用吗?
  • 企业受赠资产会计处理
  • 折旧计入主营业务成本的情况
  • 扶贫差旅费
  • 采购费用属于什么会计分录
  • 预付账款的账务处理例题
  • 会计账簿的设计要与会计报表相衔接 ()X
  • 好用的sql工具
  • u盘安装win8系统教程
  • windows modules installer worker
  • centos7.0网络配置
  • 苹果完美越狱最新消息
  • win10电脑提示
  • 如何彻底删除超级QQ秀
  • 双win系统怎么删除一个
  • Cocos2d-x 3.0final 终结者系列教程23CocosStudio UI组件使用大全Cocos2d-x3.2使用
  • javascript怎么弄
  • 图片加载完成再加载
  • 最新推荐美剧
  • jquery事件的响应
  • jquery轮播图自动播放
  • jquery的gt
  • python toga
  • android toolbar menu
  • 开票软件如何升级系统
  • 绿化工程项目
  • 劳办发1994第48号文全文原文
  • 银行收取手续费可以抵扣进项税额吗
  • 特价机票包含燃油费和机场建设费吗
  • 陕西电子税务电话是多少
  • 汕头办理社保卡流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设