JavaScript实现拖拽简单效果
本文实例为大家分享了JavaScript实现拖拽效果的具体代码,供大家参考,具体内容如下
1.1 拖拽的基本效果
思路:
鼠标在盒子上按下时,准备移动 (事件加给物体)
鼠标移动时,盒子跟随鼠标移动 (事件添加给页面)
鼠标抬起时,盒子停止移动 (事件加给页面)
var o = document.querySelector('div'); ?//鼠标按下o.onmousedown = function (e) {//鼠标相对于盒子的位置var offsetX = e.clientX - o.offsetLeft; var offsetY = e.clientY - o.offsetTop; //鼠标移动document.onmousemove = function (e) {o.style.left = e.clientX - offsetX + "px"; o.style.top = e.clientY - offsetY + "px"; }//鼠标抬起document.onmouseup = function () {document.onmousemove = null; document.onmouseup = null; }}
1.2 拖拽的问题 【JavaScript实现拖拽简单效果】若盒子中出现了文字,或盒子自身为图片,由于浏览器的默认行为(文字和图片本身就可以拖拽),通过设置return false即可以。但是,拦截默认行为在IE低版本中,不适用;可以使用全局捕获来解决IE的问题。
1.2.1 全局捕获
全局捕获仅适用于IE低版本浏览器
一旦为指定节点添加全局捕获,则页面中其它元素就不会触发同类型事件
1.2.2 完整版的拖拽
var o = document.querySelector('div'); ?//鼠标按下o.onmousedown = function (e) {if (o.setCapture) {//IE低版本o.setCapture()}e = e || window.event//鼠标相对于盒子的位置var offsetX = e.clientX - o.offsetLeft; var offsetY = e.clientY - o.offsetTop; //鼠标移动document.onmousemove = function (e) {e = e || window.evento.style.left = e.clientX - offsetX + "px"; o.style.top = e.clientY - offsetY + "px"; }//鼠标抬起document.onmouseup = function () {document.onmousemove = null; document.onmouseup = null; if (o.releaseCapture) {o.releaseCapture(); //释放全局捕获}}return false; //标准浏览器的默认行为}
1.3 拖拽边界 可视区域宽度:
可视区域高度:
//屏幕的高度// var h=document.documentElement.clientHeight// var w=document.documentElement.clientWidth; // console.log(h,w);
分析:
最大left:可视区域宽度-盒子宽度
最小left:0
最小top: 0
最大top: 可视区域的高度-盒子的高度
1.4 碰撞 碰撞的重点在于寻找临界值。
文章图片
分别命名两个物体的四边为:L1,T1,R1,B1和L2,T2,R2,B2
若L1 > R2 || T1 > B2 || R1 < L2 || B1 < T2,则不碰撞
?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 事件代理
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 数组常用方法一
- 人脸识别|【人脸识别系列】| 实现自动化妆