原文链接:https://www.cnblogs.com/layaling/p/11009570.html

原文是左中右三种情况的拖动。由于项目需要,我删除掉了右边的,直接左右区域拖动调整div宽度

1、拖动,调整左右两侧宽度

<template>
<div class="wid100 hig100">
<ul class="box" ref="box">
<li class="left" ref="left">西瓜</li>
<li class="resize" ref="resize"></li>
<li class="mid" ref="mid">备注2</li>
</ul>
<ul class="box" ref="box">
<li class="left" ref="left">西瓜</li>
<li class="resize" ref="resize"></li>
<li class="mid" ref="mid">备注2</li>
</ul>
</div>
</template> <script>
export default {
name: 'Dashboard',
mounted () {
this.dragControllerDiv();
},
methods: {
dragControllerDiv: function () {
var resize = document.getElementsByClassName('resize');
var left = document.getElementsByClassName('left');
var mid = document.getElementsByClassName('mid');
var box = document.getElementsByClassName('box');
for (let i = 0; i < resize.length; i++) {
// 鼠标按下事件
resize[i].onmousedown = function (e) {
var startX = e.clientX;
resize[i].left = resize[i].offsetLeft;
// 鼠标拖动事件
document.onmousemove = function (e) {
var endX = e.clientX;
var moveLen = resize[i].left + (endX - startX); // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
var maxT = box[i].clientWidth - resize[i].offsetWidth; // 容器宽度 - 左边区域的宽度 = 右边区域的宽度 if (moveLen < 150) moveLen = 150; // 左边区域的最小宽度为150px
if (moveLen > maxT - 150) moveLen = maxT - 150; //右边区域最小宽度为150px resize[i].style.left = moveLen; // 设置左侧区域的宽度 for (let j = 0; j < left.length; j++) {
left[j].style.width = moveLen + 'px';
mid[j].style.width = (box[i].clientWidth - moveLen - 10) + 'px';
}
}
// 鼠标松开事件
document.onmouseup = function (evt) {
document.onmousemove = null;
document.onmouseup = null;
resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
}
resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
return false;
}
} }
}
}
</script> <style lang="scss" scoped>
ul,li{
list-style: none;
display: block;
margin:0;
padding:0;
}
.box{
width:100%;
height: 48%;
margin: 1% 0px;
overflow:hidden;
}
.left{
width:calc(30% - 10px);
height:100%;
background:#c9c9c9;
float:left;
}
.resize{
width:5px;
height:100%;
cursor: w-resize;
float:left;
}
.mid{
float:left;
width:70%;
height:100%;
background:#f3f3f3;
}
</style>

  

最新文章

  1. [Erlang 0116] 当我们谈论Erlang Maps时,我们谈论什么 Part 1
  2. 【hrbust2294】修建传送门
  3. MongoDB学习笔记(索引)
  4. java数据库查询类
  5. MSP430F149学习之路——PWM信号
  6. js正则表达式的验证示例
  7. 常用的js代码
  8. What and where are the stack and heap?
  9. c语言中break continue goto return和exit的区别 联系(筛选奇数和goto求和)
  10. (转) Pointers
  11. php信用卡卡号验证函数
  12. JAVA异常设计原则
  13. Python 运算符,你了解多少?
  14. 计算机网络之万维网WWW
  15. Ceres Solver 入门稍微多一点
  16. MySQL Backup myloader
  17. layui超链接追加tab选项卡必须手动刷新才出现问题
  18. vs2012添加自定义资源步骤
  19. 2016.5.14——leetcode-HappyNumber,House Robber
  20. CRITICAL **: Couldn&#39;t acquire global lock, snapshots will not be consistent: Access denied

热门文章

  1. ubuntu14 文件夹添加/删除书签
  2. exosip2 build
  3. 思维体操: HDU1008 Elevator
  4. Slim Span (最小生成树)
  5. jQuery之筛选方法
  6. OC中数组排序的3种方法
  7. AFNetworking2.0源码解析&lt;二&gt;
  8. lldb调试命令
  9. 对 django rest framework框架的认识
  10. Tensorflow 2.0 学习资源