美文网首页
js实现拖拽盒子

js实现拖拽盒子

作者: jecson | 来源:发表于2019-08-04 06:39 被阅读0次

<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> </head> <style type="text/css"> *{ margin: 0; padding: 0; } div{ width: 500px; height: 500px; background-color: yellow; position: absolute; } </style> <body> <div> box </div> <script type="text/javascript"> var box = document.getElementsByTagName("div")[0]; var mouseOffsetX = 0; //偏移 var mouseOffsetY = 0; var isDraging = false; //是否可拖拽标记 //鼠标事件1 在盒子按下(要计算鼠标相对拖拽元素左上角的坐标,并且标记元素为可拖拽) box.addEventListener('mousedown', function(e){ var e = e || window.event; mouseOffsetX = e.pageX-box.offsetLeft; mouseOffsetY = e.pageY-box.offsetTop; console.log(mouseOffsetX); console.log(mouseOffsetY); isDraging = true; }) // 事件2 鼠标移动时、检测元素是否可标记为移动,如果是则更新位置 document.onmousemove = function(e){ var e = e || window.event; var mouseX = e.pageX; //鼠标当前位置 var mouseY = e.pageY; var moveX = 0; var moveY = 0; if(isDraging === true){ moveX = mouseX - mouseOffsetX; moveY = mouseY - mouseOffsetY; //范围限定 moveX > 0 并且 moveX < (页面最大宽度 - 浮层的宽度) // moveY > 0 并且 moveY < (页面最大高度 - 浮层的高度) var pageWidth = document.documentElement.clientWidth; var pageHeight = document.documentElement.clientHeight; // 盒子宽度、高度 var boxWidth = box.offsetWidth; var boxHeight = box.offsetHeight; // 页面最大宽度、高度 var maxX = pageWidth - boxWidth; var maxY = pageHeight - boxHeight; // 盒子移动距离 moveX = Math.min( maxX , Math.max( 0 , moveX)); moveY = Math.min( maxY , Math.max( 0 , moveY)); box.style.left = moveX + 'px'; box.style.top = moveY + 'px'; } } // 鼠标事件3 鼠标松开的时候(标记元素为不可拖拽) document.onmouseup = function(){ isDraging = false; } </script> </body> </html>


相关文章

  • js实现拖拽盒子

    *{ marg...

  • 原生js实现拖拽(碰撞检测)

    js实现拖拽

  • 拖拽

    一、JS拖拽JS里拖拽三事件, onmousedown onmousemove onmouseup 是实现交互性效...

  • js拖拽html元素工具类

    复制就能用的拖拽js方法 原生js实现拖拽元素方法 使用(注意拖拽目标元素需绝对定位 position: 'abs...

  • js实现拖拽

    ①鼠标按下+鼠标移动 → 拖拽②鼠标松开 → 无拖拽③鼠标偏移 → 拖拽距离 js实现 ① onmousedown...

  • 实现拖拽

    原生js实现 HTML5原生实现:拖拽draggable属性、DataTranfers对象

  • JS 实现拖拽之 - 九宫格拖拽

    实现思路和需要掌握的技术: 鼠标拖拽模型实现 li 盒子进行绝对定位 批量监听和批量操作 li 盒子 判断条件为移...

  • JS实现拖拽

  • js实现拖拽

    js实现拖拽 实现方式 mousedown、mousemove和mouseup 拖着目标元素在页面任意位置如果要设...

  • Vue.Draggable学习总结

    Draggable为基于Sortable.js的vue组件,用以实现拖拽功能。 特性 支持触摸设备支持拖拽和选择文...

网友评论

      本文标题:js实现拖拽盒子

      本文链接:https://www.haomeiwen.com/subject/zzledctx.html