实现效果:
分析:
1.当鼠标在粉色div上按下时,捕获onmousedown事件,获取鼠标的坐标clientX,clientY
2.鼠标在按下后移动,整个div跟随着移动,获取鼠标按下时相对于整个div的坐标,即下图中的disx,dixy
3.鼠标抬起后,整个div不再随鼠标移动,onmouseup事件
4.设置整个div能够活动的范围,即浏览器窗口大小减去div本身所占大小
具体代码:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title></title> <style type="text/css"> body{margin:0;padding:0;} #wrap{width:300px;height:200px;border:1px solid #FFFFCC;background-color:#CCFFFF;position:absolute;} #moveHere{cursor: move;width:300px;height: 30px;text-align: center;line-height:30px;background-color:#FFCCCC;} </style> </head> <body> <div id="wrap"> <div id="moveHere"></div> </div> <script type="text/javascript"> var moveHere=document.getElementById("moveHere"); var wrap=document.getElementById("wrap"); var winW=document.documentElement.clientWidth || document.body.clientWidth; var winH=document.documentElement.clientHeight || document.body.clientHeight; maxW=winW-wrap.offsetWidth; maxH=winH-wrap.offsetHeight; window.οnlοad=function(){ wrap.style.left=(maxW/2)+"px"; wrap.style.top=(maxH/2)+"px"; moveHere.οnmοusedοwn=mousedown; moveHere.οnmοuseup=mouseup; } function mousedown(event){ event=event||window.event; var disx = event.clientX-wrap.offsetLeft; var disy = event.clientY-wrap.offsetTop; document.onmousemove = function(event){ event=event||window.event; move(event,disx,disy); } } function move(event,disx,disy){ var x = event.clientX-disx; var y = event.clientY-disy; if(x<0){ x=0; }else if(x>maxW){ x=maxW; } if(y<0){ y=0; }else if(y>maxH){ y=maxH; } wrap.style.left=x+"px"; wrap.style.top=y+"px"; } function mouseup(){ document.οnmοusemοve=null; document.οnmοuseup=null; } </script> </body> </html>
最后
以上就是傻傻康乃馨最近收集整理的关于DOM事件 --鼠标拖拽div的全部内容,更多相关DOM事件内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复