事件深入应用二
来源:互联网 发布:java项目流程怎么说 编辑:程序博客网 时间:2024/06/05 20:11
拖拽的封装
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽的问题</title> <style type="text/css"> #div1{width: 100px;height: 100px;background: #f00;position:absolute;} img{width: 200px;height: 200px;position:absolute;left: 100px;height: 100px;} </style></head><script>window.onload=function (){ var oDiv=document.getElementById('div1'); var oImg=document.getElementsByTagName('img')[0]; //调用封装过的函数 drag(oDiv); drag(oImg); function drag(obj){ obj.onmousedown=function (ev){ var ev=ev||event; var disX=ev.clientX-obj.offsetLeft; var disY=ev.clientY-obj.offsetTop; if (obj.setCapture){ obj.setCapture(); } document.onmousemove=function (ev){ var ev=ev||event; obj.style.left=ev.clientX - disX + 'px'; obj.style.top=ev.clientY - disY + 'px'; if (obj.releaseCapture) { obj.releaseCapture(); } } document.onmouseup=function (){ document.onmousemove=null; } return false; } };};</script><body> <div id="div1"></div> <img src="1.jpg"></body></html>
限制范围
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽的问题</title> <style type="text/css"> #div1{width: 100px;height: 100px;background: #f00;position:absolute;} img{width: 200px;height: 200px;position:absolute;left: 100px;height: 100px;} </style></head><script>window.onload=function (){ var oDiv=document.getElementById('div1'); var oImg=document.getElementsByTagName('img')[0]; //调用封装过的函数 drag(oDiv); drag(oImg); function drag(obj){ obj.onmousedown=function (ev){ var ev=ev||event; var disX=ev.clientX-obj.offsetLeft; var disY=ev.clientY-obj.offsetTop; if (obj.setCapture){ obj.setCapture(); } document.onmousemove=function (ev){ var ev=ev||event; //限制移动的范围 var L=ev.clientX - disX; var T=ev.clientY - disY; if (L<0) { L=0; }else if(L>document.documentElement.clientWidth-obj.offsetWidth){ L=document.documentElement.clientWidth-obj.offsetWidth; }else if(T<0){ T=0; }else if(T>document.documentElement.clientHeight-obj.offsetHeight){ T=document.documentElement.clientHeight-obj.offsetHeight; } obj.style.left=L + 'px'; obj.style.top=T + 'px'; if (obj.releaseCapture) { obj.releaseCapture(); } } document.onmouseup=function (){ document.onmousemove=null; } return false; } };};</script><body> <div id="div1"></div> <img src="1.jpg"></body></html>
磁性吸附
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽的问题</title> <style type="text/css"> #div1{width: 100px;height: 100px;background: #f00;position:absolute;} img{width: 200px;height: 200px;position:absolute;left: 100px;height: 100px;} </style></head><script>window.onload=function (){ var oDiv=document.getElementById('div1'); var oImg=document.getElementsByTagName('img')[0]; //调用封装过的函数 drag(oDiv); drag(oImg); function drag(obj){ obj.onmousedown=function (ev){ var ev=ev||event; var disX=ev.clientX-obj.offsetLeft; var disY=ev.clientY-obj.offsetTop; if (obj.setCapture){ obj.setCapture(); } document.onmousemove=function (ev){ var ev=ev||event; //限制移动的范围 var L=ev.clientX - disX; var T=ev.clientY - disY; if (L<100) { L=0;//实现磁性吸附 }else if(L>document.documentElement.clientWidth-obj.offsetWidth){ L=document.documentElement.clientWidth-obj.offsetWidth; }else if(T<0){ T=0; }else if(T>document.documentElement.clientHeight-obj.offsetHeight){ T=document.documentElement.clientHeight-obj.offsetHeight; } obj.style.left=L + 'px'; obj.style.top=T + 'px'; if (obj.releaseCapture) { obj.releaseCapture(); } } document.onmouseup=function (){ document.onmousemove=null; } return false; } };};</script><body> <div id="div1"></div> <img src="1.jpg"></body></html>
碰撞检测
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽的问题</title> <style type="text/css"> #div1{width: 50px;height: 50px;background: #f00;position:absolute;} img{width: 400px;height: 400px;position:absolute;left: 525px;top: 92px;} </style></head><script>window.onload=function (){ var oDiv=document.getElementById('div1'); var oImg=document.getElementsByTagName('img')[0]; //调用封装过的函数 drag(oDiv); // drag(oImg); function drag(obj){ obj.onmousedown=function (ev){ var ev=ev||event; var disX=ev.clientX-obj.offsetLeft; var disY=ev.clientY-obj.offsetTop; if (obj.setCapture){ obj.setCapture(); } document.onmousemove=function (ev){ var ev=ev||event; //限制移动的范围 var L=ev.clientX - disX; var T=ev.clientY - disY; //碰撞检测原理,把页面化分为九宫格,检测两个元素是否重叠 var L1=obj.offsetLeft; var R1=L1+obj.clientWidth; var T1=obj.offsetTop; var B1=T1+obj.clientHeight; var L2=oImg.offsetLeft; var R2=L2+oImg.clientWidth; var T2=oImg.offsetTop; var B2=T2+oImg.clientHeight; if (R1<L2 || L1>R2 || B1<T2 || T1>B2) { oImg.src='1.jpg'; }else{ oImg.src='2.jpg'; } if (L<100) { L=0;//实现磁性吸附 }else if(L>document.documentElement.clientWidth-obj.offsetWidth){ L=document.documentElement.clientWidth-obj.offsetWidth; }else if(T<0){ T=0; }else if(T>document.documentElement.clientHeight-obj.offsetHeight){ T=document.documentElement.clientHeight-obj.offsetHeight; } obj.style.left=L + 'px'; obj.style.top=T + 'px'; if (obj.releaseCapture) { obj.releaseCapture(); } } document.onmouseup=function (){ document.onmousemove=null; } return false; } };};</script><body> <div id="div1"></div> <img src="1.jpg"></body></html>
阅读全文
0 0
- 事件深入应用二
- 事件深入应用
- 事件深入应用一
- 事件深入应用三
- 事件深入应用
- 深入理解Android事件处理(二)
- 深入理解JS异步编程二(分布式事件)
- 四:深入Nginx之事件和连接 (之二)
- javaScript笔记(二十二) 事件绑定及深入
- 深入理解React(二) —— 数据流和事件原理
- 深入理解React(二) —— 数据流和事件原理
- 深入理解React(二) —— 数据流和事件原理
- 深入理解React(二) —— 数据流和事件原理
- Android View深入解析(二)事件分发机制
- Android 中级应用 handler 之二 深入handler
- 深入理解maven与应用(二):灵活的构建
- 深入理解maven与应用(二):灵活的构建
- 读书笔记(二)_VC++深入详解&Android应用开发教程
- 懒加载和预加载
- CSU1955: 一棵数据结构
- XListView的一些适配文件
- 使用apply实现bind方法
- CAS锁与MUTEX锁性能测试
- 事件深入应用二
- storm编程指南
- 集成聚类之EAC方法
- SSL P1963 提高组 俄罗斯方块
- web基础
- XListView的必须文件
- 炉石传说
- hdu 6119 小小粉丝度度熊(尺取)
- 第一章:1.1.5信号的分解