首页 > 代码库 > js实现可拖拽的div
js实现可拖拽的div
实现一个div可以被拖拽,代码如下所示:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>zzw_drap</title> <style> * { margin: 0; padding: 0; } #box { position: absolute; top: 100px; left: 200px; width: 500px; } #bar { padding-left:50px; height: 50px; line-height: 50px; color: white; background-color: #aaa; cursor: move; } #content { padding:30px 0 0 50px ; height: 300px; background-color: #eee; } </style></head><body> <div id="box"> <div id="bar">可拖拽头部</div> <div id="content">这里是内容</div> </div> <script> /* * zzw.drag 2017-3 * js实现div可拖拽 * @params bar 可以点击拖动的元素 * @params box 拖动的整体元素 必须是position: absolute; * 思想:鼠标的clienX/clientY相对值设置为父元素的left/top的相对值 */ var dragBox = function (drag, wrap) { function getCss(ele, prop) { return parseInt(window.getComputedStyle(ele)[prop]); } var initX, initY, dragable = false, wrapLeft = getCss(wrap, "left"), wrapRight = getCss(wrap, "top"); drag.addEventListener("mousedown", function (e) { dragable = true; initX = e.clientX; initY = e.clientY; }, false); drag.addEventListener("mousemove", function (e) { if (dragable === true ) { var nowX = e.clientX, nowY = e.clientY, disX = nowX - initX, disY = nowY - initY; wrap.style.left = wrapLeft + disX + "px"; wrap.style.top = wrapRight + disY + "px"; } }); drag.addEventListener("mouseup", function (e) { dragable = false; wrapLeft = getCss(wrap, "left"); wrapRight = getCss(wrap, "top"); }, false); }; dragBox(document.querySelector("#bar"), document.querySelector("#box")); </script></body></html>
其中我们可以直接使用封装好的函数,它接受两个参数,第一个是可以点击拖拽的元素,第二个是父元素。 注意:父元素的postion设置为 absolute才可以使用。
js实现可拖拽的div
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。