限制范围的拖拽的简单实现及封装(含磁性吸附)
来源:互联网 发布:淘宝发布定制产品 编辑:程序博客网 时间:2024/05/21 12:03
拖拽的实现及封装:
<body> <div id="div1" style="width: 100px; height: 100px; background: orange; position: absolute;"></div> <div id="div2" style="width: 100px; height: 100px; background: olivedrab; position: absolute; top: 200px; left: 200px;"></div> <script type="text/javascript"> var oDiv1=document.getElementById("div1"); var oDiv2=document.getElementById("div2"); drag(oDiv1); drag(oDiv2); function drag(obj){ obj.onmousedown=function(ev){ var ev= ev || event; var disX=ev.clientX-this.offsetLeft; //鼠标距离div上、左边缘的距离 var disY=ev.clientY-this.offsetTop; //设置全局捕获,兼容ie8及以下 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'; } document.onmouseup=function(){ document.onmousemove=document.onmouseup=null; //释放全局捕获 if (obj.releaseCapture) { obj.releaseCapture(); } } return false; //图片和选中的文字有拖拽默认行为,这里需要阻止 } } </script></body>
限制范围:将拖拽限制在可视区域范围之内
<body> <div id="div1" style="width: 100px; height: 100px; background: orange; position: absolute;"></div> <div id="div2" style="width: 100px; height: 100px; background: olivedrab; position: absolute; top: 200px; left: 200px;"></div> <script type="text/javascript"> var oDiv1=document.getElementById("div1"); var oDiv2=document.getElementById("div2"); drag(oDiv1); drag(oDiv2); function drag(obj){ obj.onmousedown=function(ev){ var ev= ev || event; var disX=ev.clientX-this.offsetLeft; //鼠标距离div上、左边缘的距离 var disY=ev.clientY-this.offsetTop; //设置全局捕获,兼容ie8及以下 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; } 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'; } document.onmouseup=function(){ document.onmousemove=document.onmouseup=null; //释放全局捕获 if (obj.releaseCapture) { obj.releaseCapture(); } } return false; //图片和选中的文字有拖拽默认行为,这里需要阻止 } } </script></body>
磁性吸附:如在可视区域20px范围内产生吸附
即将:
if (L<0) { L=0}else if(L>document.documentElement.clientWidth-obj.offsetWidth){ L=document.documentElement.clientWidth-obj.offsetWidth;}if (T<0) { T=0}else if(T>document.documentElement.clientHeight-obj.offsetHeight){ T=document.documentElement.clientHeight-obj.offsetHeight;}
改为:
if (L<20) { L=0}else if(L>document.documentElement.clientWidth-obj.offsetWidth-20){ L=document.documentElement.clientWidth-obj.offsetWidth;}if (T<20) { T=0}else if(T>document.documentElement.clientHeight-obj.offsetHeight-20){ T=document.documentElement.clientHeight-obj.offsetHeight;}
0 0
- 限制范围的拖拽的简单实现及封装(含磁性吸附)
- 33、JavaScript中磁性吸附的实现
- 在bcb里实现像Winamp那样具有吸附效果的磁性窗口
- 两行代码实现两个或者多个窗体的磁性吸附
- [VC]Dialog实现类似Winamp、千千静听的磁性吸附窗体(Dock)
- C#实现磁性窗体(吸附、剥离、移动)
- 磁性吸附
- 限制范围的拖拽
- 简单的磁性窗体源程序
- 流体分离技术:磁性壳聚糖微球对大豆乳清的吸附作用
- Delphi磁性窗体VCL组件的实现
- 开源!!一个简单的代理吸附工具
- “封装”的简单实现
- 磁性传感器的应用
- 面向对象继承-限制范围的拖拽
- 虚函数的限制及多态性的有效范围
- 对于虚函数的限制及多态性的有效范围
- iOS-UIDatePicker的简单使用和时间范围限制
- LeetCode 216. Combination Sum III
- [LeetCode] 134. Gas Station
- Java 中的集合框架
- sbt安装与配置
- nginx TCP 负载均衡在oracle 10g负载均衡实践
- 限制范围的拖拽的简单实现及封装(含磁性吸附)
- leetcode: Search Insert Position
- 嵌入式概括
- JavaScript实现搜索框效果
- OBIEE创建Usage tracking
- LintCode:backpack VI
- Android studio2.2 execution failed: SymbolForDebug解决办法
- java自学之路4
- Android四大基本组件介绍与生命周期