HTML5 拖放及排序的简单实现
之前写过个类似的例子,看这里.
但想再深入一步,希望能通过拖放,来交换二个元素的位置.最好有应用到手机平台上.
作了个简单的例子,在手机上测试的时候不成功..查了好多资料.暂时未能解决.
效果如下图:
相关代码如下:
HTML :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" /> < title > html5 drag and drop</ title > </ head > < body > < div class = "container" > < a draggable = "true" id = "a1" style = 'left:0px; ' >one</ a > < a draggable = "true" id = "a2" style = 'left:160px; ' >two</ a > < a draggable = "true" id = "a3" style = 'left:320px; ' >three</ a > < a draggable = "true" id = "a4" style = 'left:480px; ' >four</ a > < a draggable = "true" id = "a5" style = 'left:640px; ' >five</ a > </ div > </ body > </ html > |
JavaScript :
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
|
var origin; $( ".container" ).find( "a" ).on( "drop" , function (e) { var origin_pos = $(origin).position(); var target_pos = $(e.target).position(); $(origin).addClass( "move" ).animate(target_pos, "fast" , function () { $( this ).removeClass( "move" ); }); $(e.target).addClass( "move" ).animate(origin_pos, "fast" , function () { $( this ).removeClass( "move" ); }); }).on( "dragstart" , function (e) { // only dropEffect='copy' will be dropable e.originalEvent.dataTransfer.effectAllowed = 'move' ; origin = this ; }).on( "dragover" , function (e) { if (e.preventDefault) e.preventDefault(); // allows us to drop e.originalEvent.dataTransfer.dropEffect = 'move' ; // only dropEffect='copy' will be dropable }); |
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
|
*[draggable=true] { -moz-user-select: none ; -khtml-user-drag: element; cursor : move ; } *:-khtml-drag { background-color : rgba( 238 , 238 , 238 , 0.5 ); } a { text-decoration : none ; color : #000 ; width : 120px ; border : 3px dashed #999 ; padding : 10px ; display :inline- block ; transition: all 2 s; position : absolute ; top : 10px ; } .container { position : relative ; } a. move { -webkit-transform:scale 3 d( 1.1 , 1.1 , 1.1 ); } a:hover:after { content : ' (drag me)' ; color : green } |
Powered By RunJS