会话框拖拽效果实现
来源:互联网 发布:物理 知乎 编辑:程序博客网 时间:2024/06/06 10:42
允许转载,但请注明出处:http://blog.csdn.net/sysuzjz/article/details/41801415
遇到这需求是想模仿网页版QQ,多个会话框时会叠一起,需要有拖拽功能。
网上找到了一篇代码(原文地址),但其中有少数地方边界处理没做好,计算也有一点问题,修正了下。原文所说的弊端未解决。
界面代码如下:
<!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; z-index:1; } .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> </body></html>
JS代码
var Dragging = function(validateHandler){ //参数为验证点击区域是否为可移动区域,如果是返回欲移动元素,负责返回null var draggingObj = null; //dragging Dialog var diffX = 0; var diffY = 0; function mouseHandler(e){ switch(e.type){ case 'mousedown': draggingObj = validateHandler(e);//验证是否为可点击移动区域 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); } }}function getDraggingDialog(e){ var target = e.target; while(target && target.className.indexOf('dialog-title') == -1){ target = target.offsetParent; } if(target != null){ return target.offsetParent; }else{ return null; }}// 启动拖拽效果Dragging(getDraggingDialog).enable();
0 0
- 会话框拖拽效果实现
- css实现会话气泡的效果
- css实现会话气泡的效果
- css实现会话气泡的效果
- Cookie实现会话跟踪!
- Cookie实现会话跟踪
- ListView实现会话气泡
- Tomcat 实现会话保持
- URL重写实现会话跟踪
- URL重写实现会话跟踪
- SecureCRT多会话标签实现
- php实现简单的会话
- web会话追踪的实现
- JavaWeb项目 实现https会话
- Android融云会话及会话列表的实现
- 会话技术的实现原理 会话技术分类
- WEB开发中实现会话跟踪实现
- 会话
- 【JSP开发】建立第一个Servlet项目
- 查询SQLSERVER执行过的SQL记录
- C语言之结构体
- 第14周项目 oj 习题
- time,datetime------python操作日期和时间的方法
- 会话框拖拽效果实现
- R语言作图保存在pdf中时无法显示中文标题
- winform 中show()函数和showdialog()函数区别
- ubuntu 小功能
- strcpy,strlen,strcat源码[MSDN]
- OOA/OOD/OOP
- 总有一些值得记录的东西,自定义控件的监听
- Deep Learning 读书笔记(八)
- 打印表格的样式问题