(function () { // 获取相关DOM元素 let resize = document.getElementById('resize'); let left = document.getElementById('left'); let mid = document.getElementById('right'); let box = document.getElementById('box'); // 鼠标按下事件 resize.onmousedown = function (e) { // 记录坐标起始位置 let startX = e.clientX; // 左边元素起始宽度 left.left = left.offsetWidth; // 鼠标拖动事件 document.onmousemove = function (e) { // 鼠标拖动的终止位置 let endX = e.clientX; // 计算移动的距离 let moveLen = left.left + (endX - startX); // 获取容器的最大宽度(排除拖拽条宽度) let maxWidth = box.clientWidth - resize.offsetWidth; // 限制左边区域的最小宽度为30px if (moveLen < 300) moveLen = 300; // 限制左边区域的最大宽度为最大宽度 - 右侧最小宽度 if (moveLen > maxWidth - 420) moveLen = maxWidth - 420; // 设置左边区域的宽度 left.style.width = moveLen + 'px'; // 设置右边区域的宽度 mid.style.width = (maxWidth - moveLen) + 'px'; }; // 鼠标松开事件 document.onmouseup = function (evt) { document.onmousemove = null; document.onmouseup = null; resize.releaseCapture && resize.releaseCapture(); // 释放鼠标捕获 }; // 设置鼠标捕获 resize.setCapture && resize.setCapture(); return false; // 阻止默认事件 }; })();