使用 JS 实现拖拽拉伸一个 div 的宽度和高度
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
使用 JS 实现了一个可拉伸的 1. 鼠标在浏览器中的坐标基本概念2. 鼠标按住拖动改变宽度原理
改变高度同理。 3. 代码实现HTML: <div id="container1" class="resizable"></div> Javascript: 混用了浏览器原生 API 与 jQuery,因为 jQuery 的链式调用太好用了。
bindResize(); function bindResize() { const el = document.getElementById('container1'); let els = el.style, x = y = 0; el.addEventListener('mousemove', function(evt) { if (el.offsetWidth - evt.offsetX <= 10) { els.cursor = 'e-resize'; } else { els.cursor = 'auto'; }})el.addEventListener('mousedown', function(evt) { // 点击位置与元素右边框的距离,不变值 x = el.offsetWidth - evt.offsetX // 在支持 setCapture 捕捉焦点, 设置事件 el.setCapture ? ( el.setCapture(), el.onmousemove = function (ev) { mouseMove(ev || event) }, el.onmouseup = mouseUp ) : ($(document).bind("mousemove", mouseMove).bind("mouseup", mouseUp))
// 阻止默认事件 evt.preventDefault();}) // 鼠标移动事件 function mouseMove(evt) { els.width = evt.offsetX + x + 'px';// 如果鼠标移出元素或屏幕外 if (evt.offsetX <= 0 || evt.offsetX >= document.body.clientWidth + 2) {mouseUp()} } // 释放焦点,移除事件 function mouseUp() { el.releaseCapture ? ( el.releaseCapture(), el.onmousemove = el.onmouseup = null ) : ($(document).unbind("mousemove", mouseMove).unbind("mouseup", mouseUp)) } }4. 不用 js 可以实现 div 拉伸吗?可以,两个 css 属性解决: .resizable { overflow: auto; resize: both; } 该文章在 2023/5/23 15:17:07 编辑过 |
关键字查询
相关文章
正在查询... |