js 拖拽实现
2016-07-12 13:05
633 查看
代码参考
另外一个(转)
<!DOCTYPE html> <html lang="en"> <title>拖拽</title> <head> <meta charset="UTF-8"> <title>Document</title> <style> #dog { width: 150px; height: 150px; background: red; position: fixed; } </style> </head> <body> <div id="dog"></div> </body> </html> <script> utils = { dragMov:function(dom){ dom.style.cursor = 'move'; dom.onmousedown = function (ev) { var oEvent = ev || event; var gapX = oEvent.clientX - dom.offsetLeft; var gapY = oEvent.clientY - dom.offsetTop; document.onmousemove = function (ev) { var oEvent = ev || event; //限制在可视区域内运动 var l = oEvent.clientX - gapX; var t = oEvent.clientY - gapY; var r = document.documentElement.clientWidth - dom.offsetWidth; var b = document.documentElement.clientHeight - dom.offsetHeight; if (l < 0) { dom.style.left = 0 + "px"; } else if (l > r) { dom.style.left = r + "px"; } else { dom.style.left = l + "px"; } if (t < 0) { dom.style.top = 0 + "px"; } else if (t > b) { dom.style.top = b + "px"; } else { dom.style.top = t + "px"; } } } dom.onmouseup = function () { document.onmousemove = null; document.onmouseup = null; } } } utils.dragMov(document.getElementById('dog')); </script>
另外一个(转)
<!DOCTYPE html> <html> <head> <title>Test</title> <style type="text/css" > html,body { height:100%; width:100%; padding:0; margin:0; } .dialog { width:250px; height:250px; position:absolute; background-color:#ccc; -webkit-box-shadow:1px 1px 3px #292929; -moz-box-shadow:1px 1px 3px #292929; box-shadow:1px 1px 3px #292929; margin:10px; } .dialog-title { color:#fff; background-color:#404040; font-size:12pt; font-weight:bold; padding:4px 6px; cursor:move; } .dialog-content { padding:4px; } </style> </head> <body> <div id="dlgTest" class="dialog"> <div class="dialog-title">Dialog</div> <div class="dialog-content"> This is a draggable test. </div> </div> <script type="text/javascript"> var Dragging=function(dom){ //参数为验证点击区域是否为可移动区域,如果是返回欲移动元素,负责返回null var draggingObj=null; //dragging Dialog var diffX=0; var diffY=0; function mouseHandler(e){ switch(e.type){ case 'mousedown': draggingObj=dom;//验证是否为可点击移动区域 if(draggingObj!=null){ diffX=e.clientX-draggingObj.offsetLeft; diffY=e.clientY-draggingObj.offsetTop; } break; case 'mousemove': if(draggingObj){ draggingObj.style.left=(e.clientX-diffX)+'px'; draggingObj.style.top=(e.clientY-diffY)+'px'; } break; case 'mouseup': draggingObj =null; diffX=0; diffY=0; break; } }; return { enable:function(){ document.addEventListener('mousedown',mouseHandler); document.addEventListener('mousemove',mouseHandler); document.addEventListener('mouseup',mouseHandler); }, disable:function(){ document.removeEventListener('mousedown',mouseHandler); document.removeEventListener('mousemove',mouseHandler); document.removeEventListener('mouseup',mouseHandler); } } } Dragging(document.querySelector('#dlgTest')).enable(); </script> </body> </html>
相关文章推荐
- **JAVASCRIPT** 程序控制结构和函数
- Extjs tree节点的点击事件
- js中字符串String中使用正则表达式的方法
- js 文字预写匹配
- js获取编辑框游标的位置
- js 监控浏览器关闭事件
- js中使用正则表达式(g模式和非g模式的区别)
- Servelet-页面乱码(非英文字符全部是问号)
- Jsp中的自定义标签
- (js)强制不使用“兼容性视图”
- js 模拟QQ聊天窗口图片播放效果(带滚轮缩放)
- js时间戳转成日期格式
- ECMAScript 6 学习系列课程 (ES6 proxy和Reflect的相关用法)
- JS中的对象
- 判断字符串能否转json
- 理解 JavaScript 作用域和作用域链
- 读书笔记----JavaScript 权威指南(一)
- jstl标签
- js 方法
- Js作用域链及变量作用域