当前位置: 首页 > article >正文

vue实现动态获取左侧导航宽度,右侧内容动态改变margin值

vue实现动态获取左侧导航宽度,右侧内容动态改变margin值

正常情况下,左侧菜单全部收起来,给个固定宽度即可(子菜单一般不会很多的)

问题:子菜单全部展开的时候 右边内容会被遮挡一部分,不会随着左边菜单的宽度自动改变margin-left值

目前需求:有个菜单是全部文件,下面展示的是所有的文件夹包括文档(会有很多层)

想法:左边菜单宽度变化的时候可以动态的获取宽度,然后设置右边内容的margin-left

想要实现的效果大概是这个样子的:左边菜单我用了el-menu嵌套el-tree**

在这里插入图片描述

目前实现的效果:(因为项目是重构,从一点一点写的,所以先写了一点结构样式出来)
用的是vue2的框架,框架模板在vue2框架模板

在这里插入图片描述
在这里插入图片描述

添加自定义指令,在左边菜单被撑开的时候动态获取到宽度

注意:directives要跟钩子函数同级,有计算属性的话要写在计算属性的前面,我是直接在菜单页中写看了(layout/components/Sidebar/index.vue)

 // 监听左侧菜单自动被撑开时宽度变化directives: {resize: {// 指令的名称bind(el, binding) {// el为绑定的元素,binding为绑定给指令的对象console.log(el, "绑定", binding);let _width = "";function isReize() {const style = document.defaultView.getComputedStyle(el);if (_width !== style.width) {binding.value({ width: style.width, targetId: el.id });_width = style.width;}}el.__vueSetInterval__ = setInterval(isReize, 300);},unbind(el) {console.log(el, "解绑");clearInterval(el.__vueSetInterval__);},},},

methods中的方法动态给右侧内容赋值margin-left

methods: {MuneResize(data) {// 拿到左侧菜单父元素const leftDom = document.getElementById(`${data.targetId}`);// 拿到右侧内容父元素const mainContainer =document.getElementsByClassName("main-container")[0];mainContainer.style.marginLeft = leftDom.clientWidth + "px";},},

最后在左侧菜单父元素上使用自定义指令
在这里插入图片描述
实现效果:右侧内容的margin-left值会根据左侧菜单的宽度自动改变
在这里插入图片描述

http://www.lryc.cn/news/2419068.html

相关文章:

  • Google网站流量统计工具
  • 利用vps+frp实现访问公司内网windows远程桌面
  • C代码内存检测工具memwatch 使用总结
  • Windows CE的目录组织
  • JDK1.8下载、安装及环境变量配置
  • 数据库开发019 DataReader对象
  • 数字图像处理(冈萨雷斯 第三版)
  • 数据通信与计算机网络
  • GJM : 数据结构 - 轻松看懂机器学习十大常用算法 [转载]
  • 虚拟机的几种网络连接方式
  • e1000网络驱动分析
  • Bugku杂项题目解析
  • Win7桌面显示计算机(我的电脑)图标
  • 操作系统0x08-内存管理概念
  • 农夫安全-安全网站导航 farmsec
  • 全球免费公共DNS服务器IP地址大全(包含IPv6)
  • 通过基因组选择预测杂交水稻的表现(数据挖掘)
  • Linux操作系统之文件系统详解
  • 完全从零Java自学系列【入门篇】(第一课:环境搭建工具安装与初入编程【初识工程JAVA文件语法变量判断循环】)
  • jpa 托管_JPA EntityManager详解(一)
  • OpenSSL安全漏洞与编程实践
  • Php168代码执行漏洞,Vulnhub-ThinkPHP 2.x 任意代码执行漏洞
  • 【转载】10个IT技术论坛
  • 高质量的子程序1
  • NXP JN5169使用代码模板新建外设工程
  • C# 反射(二)操作属性PropertyInfo
  • 基于 Chromium 的第三方浏览器一览
  • Android Kotlin 模块化清洁架构项目指南
  • sptd.sys不是病毒?
  • 网络工程专业主要要学习什么知识呢?