也写Jquery插件,拖动布局

 

  1 (function($){
2 $.fn.lsMovePanel=function(){
3 var id=this.attr("id");
4 var X=Y=0;
5 var offsetX=offsetY=0;//绝对位置
6 var OldIndex=0;///存储原始索引
7 var Temp_Li="<li id=\"Temp_Li\" style=\"background-color:#FFFFFF;border-color:#FF023C\"></li>";
8 var Move_obj;///当前拖动的对象
9 $("#"+id+" li").each(function(i){
10 $(this).attr("open","0");
11 //鼠标点击
12 $(this).bind("mousedown",function(){
13 if(event.button==1 || event.button==0){$(this).attr("open","1");}
14 if($(this).attr("open")=="1"){
15 $(this).css({
16 cursor:"move",
17 opacity:"0.7"
18 });
19 X=event.clientX;
20 Y=event.clientY;
21 offsetX=$(this).offset().left;
22 offsetY=$(this).offset().top;
23 OldIndex=$(this).index();
24 $(this).css({
25 position:"absolute",
26 left:offsetX,
27 top:offsetY
28 });
29 $("#"+id+" li").each(function(i){
30 if(i==OldIndex){
31 $(this).after(Temp_Li);
32 }
33 })
34 }
35 });
36 //鼠标放开
37 $(this).bind("mouseup",function(){
38 if(event.button==1 || event.button==0){$(this).attr("open","0");}
39 if($(this).attr("open")=="0"){
40 $("#Temp_Li").before($(this));
41 $(this).animate({
42 left:$("#Temp_Li").offset().left,
43 top:$("#Temp_Li").offset().top,
44 },300,function(){
45 $("#Temp_Li").remove();
46 $(this).css({
47 cursor:"default",
48 opacity:"1",
49 position:"static"
50 });
51 });
52 $("#"+id+" li").each(function(i){
53 $(this).css({
54 "border-color":"#666666"
55 });
56 });
57 }
58 });
59 //移动
60 $(this).bind("mousemove",function(){
61 if($(this).attr("open")=="1"){
62 var current_X=current_Y=0;
63 current_X=offsetX+event.clientX-X;
64 current_Y=offsetY+event.clientY-Y;
65 $(this).css({
66 position:"absolute",
67 left:current_X,
68 top:current_Y
69 });
70 Move_obj=this;
71 $("#"+id+" li").each(function(i){
72 if(i!=OldIndex && $(this).attr("id")!="Temp_Li"){
73 var Deviation=0;
74 var Max_X=$(this).offset().left+$(this).width()-Deviation;
75 var Min_X=$(this).offset().left+Deviation;
76 var Max_Y=$(this).offset().top+$(this).height()-Deviation;
77 var Min_Y=$(this).offset().top+Deviation;
78 if((event.clientX < Max_X) && (event.clientY+$(Move_obj).height() > Max_Y) && (event.clientY+$(Move_obj).height() > Min_Y) && (event.clientX > Min_X) && (event.clientY < Max_Y) ){
79 $(this).css({
80 "border-color":"#FF7578"
81 });
82 //判断覆盖对象索引值在前还是后
83 if(OldIndex>$(this).index()){
84 $("#Temp_Li").before($(this));
85 $("#Temp_Li").remove();
86 $(this).before(Temp_Li);
87 }else{
88 $("#Temp_Li").after($(this));
89 $("#Temp_Li").remove();
90 $(this).after(Temp_Li);
91 }
92 }else{
93 $(this).css({
94 "border-color":"#666666"
95 });
96
97 }
98
99 }
100
101 })
102 }
103 });
104 });
105 }
106 })(jQuery);


调用例子:

View Code
 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/>
5 <title></title>
6 <style>
7 #Panel{
8 width:630px;
9 height:auto;
10 padding:0px;
11 }
12 #Panel li{
13 float:left;
14 list-style:none;
15 width:300px;
16 height:100px;
17 margin:5px;
18 background-color:#D9F1FF;
19 border:1px dotted #666666;
20 text-align:center; position:static;
21 }
22 *{
23 font-size:12px;
24 }
25 </style>
26 </head>
27 <script src="http://files.cnblogs.com/lsmayday/jquery-1.4.2.min.js"></script>
28 <script src="http://files.cnblogs.com/lsmayday/lsMovePanel.js"></script>
29 <body>
30 <div style="margin-left:100px;">
31
32 <ul id="Panel">
33 <li style="background-color:#3399FF"></li>
34 <li style="background-color:#00CCFF"></li>
35 <li style="background-color:#CC9900"></li>
36 <li style="background-color:#FF6600"></li>
37 <li style="background-color:#FFCC99"></li>
38 </ul>
39
40 </div>
41
42
43 <script>
44 $("#Panel").lsMovePanel();
45 </script>
46 </body>
47 </html>



点我运行

你可能感兴趣的:(jquery插件)