用javascript实现对div的拖拽功能的实现过程
来源:互联网 发布:软件服务费合同模板 编辑:程序博客网 时间:2024/05/16 10:44
<div id="drag" class="drag"></div>
<script type="text/javascript">
var isDown =false;
var doc = document.documentElement || document.body,
dragDiv = document.getElementById("drag");
doc.onmousemove = function(e){
if(isDown){
e = e || window.event || Event;
dragDiv.style.left = e.pageX;
dragDiv.style.top = e.pageY;
}//这里存在兼容性问题,ie无法识别,但是总的来说还是已经迈出了一大步。
}
doc.onmouseup = function(){
isDown = false;
}
var drag = document.getElementById("drag");
drag.onmousedown = function(){
isDown = true;
}
</script>
</body>
上面页面是网络上一位仁兄给予的结果,同我的写法相比我必须说的是,我很惭愧,看来还是没有理解到JavaScript的精髓啊,给e.pageX 和e.pageY 改成 e.offsetX 和e.offsetY;,在开始的时候我的写法是这样的:
<html> <head> <title> New Document </title> <style type="text/css"> body{margin:0} .drag{width:40px;height:40px;background:#123321;position:relative} </style> </head>
<body> <div id="drag" class="drag" onmousedown="move(event)" onmousemove="upmove(event)" onmouseup="stopdrag(event)"></div> <script type="text/javascript"> var x,y,cx,cy; var down=false; function move(event){ var even=event?event:window.event; var drag=document.getElementById("drag"); x=drag.offsetLeft; y=drag.offsetTop; cx=even.clientX; cy=even.clientY; down=true; } var cx1,cy1; function upmove(event){ var even=event?event:window.event; var drag=document.getElementById("drag"); if(down){ cx1=even.clientX-cx; cy1=even.clientY-cy; drag.style.left=cx1+"px"; drag.style.top=cy1+"px"; } } function stopdrag(event){ var even=event?event:window.event; var drag=document.getElementById("drag"); down=false; drag.id="drag"; drag.style.left=cx1+"px"; drag.style.top=cy1+"px"; } </script> </body></html>
颜色加深的部分是最大的问题,问题原因是在每次结束后会cx1,cy1第二次拖拽会归零。后来一位仁兄给我提供了关于通过日子寻找问题的方法:最大的改进是添加一个判断:
问题表面上得到了解决,但是新的问题出现了:类似onmouseover事件的情况,如div会出现在onmouseup事件发生后鼠标移动到div上,div不需点击仍可以随箭头运动。
- 用javascript实现对div的拖拽功能的实现过程
- 用javascript实现对div的拖拽功能的实现过程
- Javascript对圆角div的实现
- 详解原生JavaScript实现div拖拽功能
- 纯js实现div的拖拽功能
- 用javascript实现DIV的拖动
- Javascript 实现 div 的拖动
- JavaScript实现下拉菜单对文本框赋值的小功能
- 30、JavaScript中简单拖拽DIV的实现
- 用 JavaScript 实现"back"按钮的功能
- 用 JavaScript 实现"back"按钮的功能
- javascript 实现replaceall的功能
- 实现展开收起DIV的功能
- jS实现兼容的div拖放功能
- JavaScript对ECMAScript的实现
- javascript实现对图片的随意拖拽,放大缩小
- javascript实现div的显示和隐藏
- javascript+div+css滚动菜单的实现.
- opencv 提取轮廓大于某个阈值的图像
- XML小型数据库【XMLHelper】
- php用反射实现多继承
- 求四个数的最大公约数
- 送大家一大堆管理、销售、成功类文档
- 用javascript实现对div的拖拽功能的实现过程
- 很好的设计-安全的单例模式
- VB 中使用SendKeys开启Run 窗口和是用API函数去开启Run
- 哈希表和哈希算法
- unix network programming volume1 sorce code build and get(UNIX網絡編程卷1第三版)
- matlab win7 3G开关
- 如何配置禅道管理自动发送通知邮件
- Oracle的表空间quota详解(ORA-01536,ORA-01950)
- 从PCB文件后缀判断文件格式