日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

HTML5中的拖放

發布時間:2025/7/14 HTML 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HTML5中的拖放 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于HTML5中的拖放

拖放(Drag 和 Drop)是一種常見的特性,即抓取對象以后拖到另一個位置,在 HTML5 中,拖放是標準的組成部分。在HTML5中用戶可以使用鼠標選擇一個可拖動元素,將元素拖動到一個可放置元素,并通過釋放鼠標按鈕放到這些元素。在拖動操作期間,可拖動元素的半透明表示跟隨鼠標指針。

如果我們希望元素可以被拖動,那么需要將其 draggable屬性設為true (a標簽draggable默認是true)

拖放的事件
在進行拖放操作的不同階段會觸發數種事件,拖拽事件的dataTransfer屬性存放了拖放操作中的相關數據。

dragstart作用于[源元素],當一個元素開始被拖拽的時候觸發,用戶拖拽的元素需要附加dragstart事件。在這個事件中,監聽器將設置與這次拖拽相關的信息,例如拖動的數據和圖像。
dragenter作用于[源元素],當拖拽中的鼠標進入一個元素的時候觸發。這個事件的監聽器需要指明是否允許在這個區域釋放鼠標。如果沒有設置監聽器,或者監聽器沒有進行操作,則默認不允許釋放。
dragover作用于[目標元素],當拖拽中的鼠標移動經過一個元素的時候觸發。
dragleave作用于[目標元素],當拖拽中的鼠標離開元素時觸發。可以作為可釋放反饋的高亮或插入標記去除。
drag作用于[源元素],事件在元素被拖動時觸發。
drop作用于[目標元素],在拖拽操作結束釋放時于釋放元素上觸發。
dragend作用于[源元素],拖拽源在拖拽操作結束時觸發,不管操作成功與否。

(在拖拽的時候只會觸發拖拽的相關事件,鼠標事件,例如mousemove,是不會觸發的)

?

DataTransfer 對象
在處理拖放操作時,我們需要用到 DataTransfer 對象來保存被拖動的數據。 DataTransfer 可以保存一項或多項數據、一種或者多種數據類型。
屬性

dropEffectdropEffect?? ?
[String]指定實際的放置效果,可能的值:
copy: 復制到新的位置
move: 移動到新的位置
link: 建立一個源位置到新位置的鏈接
none: 禁止放置(禁止任何操作)
effectAllowed[String]指定拖動時被允許的效果,可能的值:
copy: 復制到新的位置.
move:移動到新的位置 .
link:建立一個源位置到新位置的鏈接.
copyLink: 允許復制或者鏈接.
copyMove: 允許復制或者移動.
linkMove: 允許鏈接或者移動.
all: 允許所有的操作.
none: 禁止所有操作.
uninitialized: 缺省值(默認值), 相當于 all.
files包含一個在數據傳輸上所有可用的本地文件列表。如果拖動操作不涉及拖動文件,此屬性是一個空列表。
types保存一個被存儲數據的類型列表作為第一項,順序與被添加數據的順序一致。如果沒有添加數據將返回一個空列表。

方法

void addElement(Element element)設置拖動源。通常不需要改變這項,如果修改這項將會影響拖動的哪個節點和dragend事件的觸發。默認目標是被拖動的節點
void clearData(String type)刪除與給定類型關聯的數據。類型參數是可選的。如果類型為空或未指定,將刪除所有類型相關聯的數據。如果不存在指定類型的數據,或數據傳輸不包含任何數據,此方法將沒有任何效果。
String getData(String type)獲得給定類型的數據,如果給定類型的數據不存在或者數據轉存沒有包涵數據,方法將返回一個空字符串。
void setData(String type,String data)為一個給定的類型設置數據。如果該數據類型不存在,它將添加到的末尾,這樣類型列表中的最后一個項目將是新的格式。如果已經存在的數據類型,替換相同的位置的現有數據。就是,當更換相同類型的數據時,不會更改類型列表的順序。
void setDragImage(DOMElement image,long x,long y)自定義一個期望的拖動時的圖片。大多數情況下,這項不用設置,因為被拖動的節點被創建成默認圖片。
image 要用作拖動反饋圖像元素
x 圖像內的水平偏移量.
y 像內的垂直偏移量.

?

瀏覽器支持
Internet Explorer 9+、Firefox、Opera 12、Chrome 以及 Safari 5+

?

演示代碼

?

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Drag & Drop</title> <style type="text/css"> .box {display: inline-block;width: 100px;height: 100px;border: 1px solid #ccccff;background-color: #ccccff;text-align: center;line-height: 100px; }.bin {width: 200px;height: 200px;padding: 10px;border: 1px solid #ccccff;overflow: hidden;float: left; } </style> </head> <body><div style="display: table;"><div class="bin"><div class="box" draggable="true">可拖拽元素</div></div><div class="bin">&nbsp;</div></div><script type="text/javascript">var bins = document.querySelectorAll('.bin');var boxs = document.querySelectorAll('.box');var drag = null;for (var i = 0; i < boxs.length; i++) {var box = boxs[i];box.onselectstart = function() {return false;};box.ondragstart = function(e) {e.dataTransfer.effectAllowed = 'move';e.dataTransfer.setData('text/plain', e.target.outerHTML);e.dataTransfer.setDragImage(e.target, 0, 0);drag = this;return true;};box.ondragend = function(e) {drag = null;return false};}for (var i = 0; i < bins.length; i++) {var bin = bins[i];//當拖曳元素進入目標元素 bin.ondragover = function(e) {e.preentDefault();return true;};//拖拽元素在目標元素上移動 bin.ondragenter = function(e) {this.style.backgroundColor = '#eeeeff';return true;};//拖拽元素在目標元素上離開 bin.ondragleave = function(e) {this.style.backgroundColor = '#fff';return true;};//拖拽的元素在目標元素上同時鼠標放開 bin.ondrop = function(e) {if (drag) {drag.parentNode.removeChild(drag);this.appendChild(drag);}this.style.backgroundColor = '#fff';return false;};}document.body.ondrop = function(e) {e.preventDefault();e.stopPropagation();}</script> </body> </html>

?

?

?

?

轉載于:https://www.cnblogs.com/relucent/p/6872053.html

總結

以上是生活随笔為你收集整理的HTML5中的拖放的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。