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

vue页面实现左右div宽度,上下div高度分割线手动拖动高度或者宽度自动变化,两个div宽度或者高度拉伸调节,实现左右可拖动改变宽度的div内容显示区

实现左右或者上下div两部分拖动,宽度或者高度自动变化,实现流畅平滑的变化,还可以是实现拖动到一定宽度就不让拖动了,如果你不需要最小宽度,就直接去掉样式就行

这是页面。分左中右三部分,中间我是用来作为拖动的按钮,如果你不需要,你可以让外部content相对定位,center中间部分绝对定位。

我这边实现的左有都具有最小宽度,左右拖动,改变的宽度。
上下div拖动,自动变化高度同样可以以相同的原理来实现。

<div class="content"><div class="left" ref="refLeft"></div><div class="center"ref="refCenter"@mousedown.stop.prevent="startResize"></div><div class="right" ref="refRight"></div>
</div>

这是对应的样式,根据自身情况,可以自己调整样式实现相关功能

.content{height: 100%;width:100%display: flex;.left {flex: 1;height: 100%;min-width: 200px;width:600px}.resize {cursor: col-resize;//拖动鼠标样式height: 100%;width: 8px;}.right {width: calc(100% - 600px);min-width: calc(100% - 600px);height: 100%;}}
// 左右拖动这里的一个大概说明,就是把减少的div宽度,加到另一个div的宽度上去,就是现实一增一减;变量自己取data定义就行了,startResize(event) {this.startX = event.clientX;this.startWidth = this.$refs.refRight.offsetWidth;console.log(event.clientX,this.startWidth,'this.startWidth')this.isResizing = true;window.addEventListener('mousemove', this.doResize);window.addEventListener('mouseup', this.stopResize);},doResize(event) {if (this.isResizing) {console.log(event.clientX,'this.startWidth')const deltaX = -event.clientX + this.startX;this.$refs.refRight.style.width = this.startWidth + deltaX + 'px';}},stopResize() {this.isResizing = false;window.removeEventListener('mousemove', this.doResize);window.removeEventListener('mouseup', this.stopResize);},

相关文章:

  • 通过Caliper进行压力测试程序,且汇总压力测试问题解决
  • 20款Python办公自动化库精选,一键提升效率!
  • itextPdf生成pdf简单示例
  • 前后端实时数据通信
  • ESP32
  • python爬虫----python列表高级
  • 【踩坑】使用CenterNet训练自己的数据时的环境配置与踩坑
  • 项目四-图书管理系统
  • AcWing 173.矩阵距离
  • Excel·VBA数组平均分组问题
  • Kubernetes 知识体系 系列一
  • Python最强自动化神器!
  • MySQL 日志:undo log、redo log、binlog 有什么用?
  • iPhone的iOS系统:定义移动智能体验,引领科技潮流之巅
  • iOS - Runtime-API
  • [nginx文档翻译系列] 控制nginx
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【剑指offer】让抽象问题具体化
  • eclipse(luna)创建web工程
  • markdown编辑器简评
  • Spring-boot 启动时碰到的错误
  • 精彩代码 vue.js
  • 深度学习中的信息论知识详解
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微服务入门【系列视频课程】
  • 无服务器化是企业 IT 架构的未来吗?
  • 小程序 setData 学问多
  • #{}和${}的区别?
  • (南京观海微电子)——COF介绍
  • (区间dp) (经典例题) 石子合并
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (五)Python 垃圾回收机制
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net core 依赖注入的基本用发
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET命名规范和开发约定
  • @EventListener注解使用说明
  • @GetMapping和@RequestMapping的区别
  • @Mapper作用
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [Angularjs]asp.net mvc+angularjs+web api单页应用
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C#]使用DlibDotNet人脸检测人脸68特征点识别人脸5特征点识别人脸对齐人脸比对FaceMesh
  • [codeforces]Checkpoints
  • [Codeforces1137D]Cooperative Game
  • [iOS]Win8下iTunes无法连接iPhone版本的解决方法
  • [iOS]让Xcode 4.2生成的app支持老的iOS设备(armv6)
  • [NISACTF 2022]level-up
  • [puppet]如何设置全局exec path
  • [QT] TCP协议演示
  • [RK-Linux] Linux A/B System详解