WEB前端開發學習----11. JQuery 實現簡單的拖拽效果

拖拽效果在網頁中很常見。實現起來也不難。記錄一下今天實現的簡單效果。css

拖拽演示html

快速拖動時,會出現問題,之後修改.ide

說白了,就是3個點擊事件。ui

1. 按下鼠標左鍵, 觸發點擊事件,此時記錄下能夠獲得鼠標相對於拖動控件的位置(當前鼠標位置-控件位置);spa

2. 拖動鼠標,觸發移動事件,能夠計算出鼠標移動的距離(當前鼠標位置-以前算出的相對位置),也就是拖拽控件所移動的距離;.net

3. 鼠標擡起,結束拖動。xml

 

在JQ中,event.pageX    event.pageY能夠獲取鼠標的位置,相對於文檔左上角。htm

如圖:blog

 

注意,在jq獲取控件的位置時:事件

x=event.pageX-parseInt($("#box").css("left"));
y=event.pageY-parseInt($("#box").css("top"));

要去掉單位px.

 

可是 在修改控件位置時,不要加單位,也不要加引號,也不用加單位px!

dx=event.pageX-x;
dy=event.pageY-y;
//不要加引號!!!
$("#box").css({
"top":dy,"left":dx
})

 

完整代碼:

 

[html]  view plain copy
 
    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" xml:lang="en">  
    3. <head>  
    4.     <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">  
    5.     <title>彈出層,移動</title>  
    6.     <script src="jq11.js"></script>  
    7.     <script>  
    8.         //x,y爲鼠標離控件左上角的相對位置   
    9.         var x=0;  
    10.         var y=0;  
    11.         var flag=false;  
    12.         $(document).ready(function(){  
    13.             $("button").click(function(){  
    14.                 $("#box").show();  
    15.             })  
    16.               
    17.             $("h3").mousedown(function(event){  
    18.                 //判斷鼠標左鍵  
    19.                 if(event.which==1){  
    20.                     flag=true;  
    21.                       
    22.                     x=event.pageX-parseInt($("#box").css("left"));  
    23.                     y=event.pageY-parseInt($("#box").css("top"));  
    24.                 }  
    25.             })  
    26.   
    27.             $("h3").mousemove(function(event){  
    28.                 if(flag){  
    29.                     //dx,dy鼠標移動的距離  
    30.                     var dx=0;  
    31.                     var dy=0;  
    32.   
    33.                     dx=event.pageX-x;  
    34.                     dy=event.pageY-y;  
    35.                     //不要加引號!!!  
    36.                     $("#box").css({  
    37.                         "top":dy,"left":dx  
    38.                     })    
    39.                 }         
    40.                   
    41.             })  
    42.   
    43.             $("h3").mouseup(function(event) {  
    44.                 flag=false;  
    45.             });  
    46.   
    47.             $("span").click(function(){  
    48.                 $("#box").hide();  
    49.                 //關閉以後,應返回原來的位置  
    50.                 $("#box").css({  
    51.                     top:120,left:120  
    52.                 })    
    53.             })  
    54.         })  
    55.   
    56.     </script>  
    57. </head>  
    58. <style type="text/css">  
    59.     *{margin:0px;  
    60.         padding: 0px;}  
    61.     body{  
    62.         font-size: 14px;  
    63.         padding: 100px;  
    64.     }  
    65.     #box{  
    66.         width:500px;  
    67.         height:400px;  
    68.         border:3px ridge #ccc;  
    69.         display: none;  
    70.         box-shadow: 2px 2px 20px #888888;  
    71.         position:absolute;  
    72.         top:120px;  
    73.         left:120px;  
    74.     }  
    75.     #box h3{  
    76.         height:30px;  
    77.         line-height: 30px;  
    78.         background-color: #ABCDEF;  
    79.         padding-left: 10px;  
    80.         padding-right:10px;  
    81.         color: white;  
    82.         cursor: move;  
    83.     }  
    84.     #box span{  
    85.         float: right;  
    86.         font-size: 12px;  
    87.         cursor: pointer;  
    88.         color:red;  
    89.     }  
    90.     #box p{  
    91.         height:350px;  
    92.         padding: 10px;  
    93.         box-shadow: 3px 3px 10px #aaa inset;  
    94.         background: #FAFAFA;  
    95.     }  
    96. </style>  
    97. <body>  
    98.     <button>彈出</button>  
    99.     <div id="box">  
    100.         <h3><span>關閉</span>鼠標左鍵拖動</h3>  
    101.         <hr/>  
    102.         <p>有點小問題,不能快速的拖動,慢慢拖吧。。。之後有時間修改</p>  
    103.           
    104.     </div>  
    105. </body>  
    106. </html>  
相關文章
相關標籤/搜索