[精讚] [會員登入]
1362

Jquery+CSS div區塊的拖拉(drag and drop)效果

網頁想要做到拖拉區塊的功能,但又不想使用他人的插件或是 jquery-ui的話,怎麼做?

分享此文連結 //n.sfs.tw/14873

分享連結 Jquery+CSS div區塊的拖拉(drag and drop)效果@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2020-12-29 12:59:04 最後編修
2020-12-22 13:27:33 By 張○○
 

自動目錄

網頁想要做到拖拉區塊的功能,但又不想使用他人的插件或是 jquery-ui的話,怎麼做?

此篇主要是參考 https://codepen.io/sun_kao/pen/DkFla 的範例修改,原範例的做法是物件用position:absolute此範例改position:fixed。

此功能主要是做個訊息框,只留下區塊的拖拉 drag and drop 的效果。

差別在於顯示的部分,margin-top 和 margin-left 有退縮 -200px。

HTML

<div id="centermsg" >
訊息欄 <div id="closemsg">X 關閉</div>
  <div id="msgbody">訊息本文
  </div>
</div>

CSS

#centermsg { 
   z-index:9999;
   position: fixed; 
   top:50%;
   left:50%; 
   margin-left:-200px; 
   margin-top:-200px; 
   background:black; 
   width:400px; 
   height:350px;
}
#msgbody { 
   background: black; 
   color:white;
}

說明

第3行 css的重點是 第三行position要設為絕對absolute或是固定fixed;

第6~7行 為了置中對齊,因此要退縮邊界為寬度的一半,就能置中。

JQUERY

var x,y,key;
$('#centermsg').bind({
    mousedown: function(event){
        var object = $(this).offset();
        x = event.pageX-object.left;
        y = event.pageY-object.top;
        key = true;  },
    mousemove: function (event){
        if(key){ $(this).css({'top':event.clientY-y+200, 'left':event.clientX-x+200 }); }},
    mouseup: function (){ key =false; }
});

說明:

第1行 設定外部變數,(x,y) 為滑鼠按下時在 <div id='centermsg'>中的相對位置,key 按下滑鼠mousedown啟動,mouseup時關閉移動的開關。

第5~6行 滑鼠位置- 左上角的位置取得按下時的div中相對位置

第9行 滑鼠在畫面上相對位置 - 相對位置 + 退縮的200 = 左上角的位置

 

參考資料

[1] https://codepen.io/sun_kao/pen/DkFla

 

 

END

你可能感興趣的文章

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式

[Ckeditor4] 讀、寫與插入內容到欄位 Ckeditor4 提供非常多方法,可以插入、讀取和寫入到TEXTAREA中

[Javascript] 偵錯方式 (火狐中的javascript偵錯) javascript 並不是很容易偵錯(debug)的語言,但那是以前,現在有很多瀏覽器支持很多的工具,此文以火狐為例談談偵錯...

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

[CKeditor4] 修改調色盤 修改ckeditor預設的調色盤

Jquery 圖片放大的工具:放大鏡 想讓網頁上的圖片局部放大,有沒有簡單好用的 jquery?

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

好用的3+2碼郵遞區號查詢系統推薦 網路上找到用地址輸入判斷3+2碼郵遞區號的辨識率不高,除了這個網站…

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式

問問題 問問題其實內涵很深,我悟了很久才懂。 有人問題的目的並不一定是想要得到答案,有時只是純粹想問問題..

最值得學的電腦技能 什麼是最值得學的電腦技能?程式設計?美工繪圖?系統網路?還是…? 都不是!個人覺得一個最值得學的電腦技能就

維修海棉拖把頭 這類型的海棉拖把很好用,可是這近發現海棉頭越來越不耐用,也許是錯覺,以往都能用個三四個月,現在二個月就差不多掉下來。 這