本文实例为大家分享了JS实现拖拽效果的具体代码,供大家参考,具体内容如下
想要让整个元素移动需要三个事件:
鼠标按下 onmousedown
鼠标移动 onmousemove
鼠标抬起 onmouseup
html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< div id = "login" class = "login" > <!-- 点击title拖拽 --> < div id = "title" class = "login-title" >登录会员 <!-- title end --> < span >< a id = "closeBtn" href = "javascript:void(0);" class = "close-login" >关闭</ a ></ span > </ div > < div class = "login-input-content" > < div class = "login-input" > < label >用户名:</ label > < input type = "text" placeholder = "请输入用户名" name = "info[username]" id = "username" class = "list-input" > </ div > < div class = "login-input" > < label >登录密码:</ label > < input type = "password" placeholder = "请输入登录密码" name = "info[password]" id = "password" class = "list-input" > </ div > </ div > < div id = "loginBtn" class = "login-button" >< a href = "javascript:void(0);" id = "login-button-submit" >登录会员</ a ></ div > </ div > |
JS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
var login = document.querySelector( '.login' ); //获取整个弹框的内容 var title = document.querySelector( '#title' ); title.addEventListener( 'mousedown' , function (e){ //当按下鼠标的时候,获取到鼠标在拖拽盒子内的坐标 //鼠标在页面的坐标 - 大盒子距离浏览器左侧的距离 var x = e.pageX - login.offsetLeft; var y = e.pageY - login.offsetTop; //鼠标移动 document.addEventListener( 'mousemove' ,move); function move(e){ //拖拽的盒子定位=鼠标在页面的坐标 - 鼠标在拖拽盒子的坐标 login.style.left = e.pageX - x + 'px' ; login.style.top = e.pageY - y + 'px' ; } //当鼠标抬起的时候,将移动事件删除 document.addEventListener( 'mouseup' , function (){ document.removeEventListener( 'mousemove' ,move); }) }) |
CSS部分
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<style> *{ padding : 0px ; margin : 0px ; } .login { display : block ; width : 512px ; height : 280px ; position : fixed ; border : #ebebeb solid 1px ; left : 50% ; top : 50% ; background : #ffffff ; box-shadow: 0px 0px 20px #ddd ; z-index : 9999 ; transform: translate( -50% , -50% ); } .login-title { width : 100% ; margin : 10px 0px 0px 0px ; text-align : center ; line-height : 40px ; height : 40px ; font-size : 18px ; position : relative ; cursor : move ; } .login-input-content { margin-top : 20px ; } .login-button { width : 50% ; margin : 30px auto 0px auto ; line-height : 40px ; font-size : 14px ; border : #ebebeb 1px solid ; text-align : center ; } .login-bg { display : none ; width : 100% ; height : 100% ; position : fixed ; top : 0px ; left : 0px ; background : rgba( 0 , 0 , 0 , . 3 ); } a { text-decoration : none ; color : #000000 ; } .login-button a { display : block ; } .login-input input.list-input { float : left ; line-height : 35px ; height : 35px ; width : 350px ; border : #ebebeb 1px solid ; text-indent : 5px ; } .login-input { overflow : hidden ; margin : 0px 0px 20px 0px ; } .login-input label { float : left ; width : 90px ; padding-right : 10px ; text-align : right ; line-height : 35px ; height : 35px ; font-size : 14px ; } .login-title span { position : absolute ; font-size : 12px ; right : -20px ; top : -30px ; background : #ffffff ; border : #ebebeb solid 1px ; width : 40px ; height : 40px ; border-radius: 20px ; } </style> |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_47300932/article/details/110405164