vue实现拖拽滑动分割面板
本文实例为大家分享了vue实现拖拽滑动分割面板的具体代码,供大家参考,具体内容如下
需求背景
左边是列表,右边是详情。 想更大范围的查看详情,所以要拖拽滑块,进行面板的分割
整体思路
- 在布局上,采用flex布局,单位采用百分比。设置flex:1,让其自动伸缩
- 滑动滑块,计算滑块在滑动过程中,占整个页面的百分比
- 将百分比,通过动态样式赋值给列表页的宽度
- 同时改变滑块的位置(也是百分比形式)
- 其次就是在vue里对鼠标事件的使用
@mousedown.prevent="mousedown"
【vue实现拖拽滑动分割面板】在methods里写方法
/*** 按下鼠标*/mousedown() {document.addEventListener('mousemove', this.handleMouseMove, false); document.addEventListener('mouseup', this.handleMouseUp, false); },/*** 按下滑动器,移动鼠标*/handleMouseMove(e) {/*** 计算容器总宽度* 计算滑块到左边的距离* 计算偏移百分比: (滑块距离左边的距离 / 页面宽度) * 100* 传递移动百分比和距左边的距离*/const clientRect = this.$refs.mainContent.getBoundingClientRect(); const offset = e.pageX; const panelPercent = (offset / clientRect.width) * 100; this.panelPercent = panelPercent; this.mainContentWidth = offset; this.$refs.imgMove.style.left = panelPercent + '%'; console.log('拖动中', this.panelPercent); },/*** 松开滑动器*/handleMouseUp () {document.removeEventListener('mousemove', this.handleMouseMove, false); },
对边界处理
if (this.panelPercent < this.min) {this.panelPercent = this.min}if (this.panelPercent > this.max) {this.panelPercent = this.max}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 详解.NET|详解.NET 6如何实现获取当前登录用户信息
- Redis|Redis 中的 set 和 sorted set 如何使用,源码实现分析
- petite-vue源码剖析-逐行解读@vue/reactivity之reactive
- 强化学习|强化学习笔记(七)演员-评论家算法(Actor-Critic Algorithms)及Pytorch实现
- 强化学习|强化学习笔记(五)Pytorch实现简单DQN
- opencv|基于深度学习的口罩识别与检测PyTorch实现
- Python学习笔记|Newton法求解非线性方程(Python实现)
- ArcGIS学习|ArcGIS实现全国人口普查数据可视化以及热力图
- dotnet|dotnet 委托的实现解析(2)开放委托和封闭委托 (Open Delegates vs. Closed Delegates)
- 阿里三面(灵魂一击——有react|阿里三面:灵魂一击——有react fiber,为什么不需要vue fiber呢())