最新的Web開發教程

HTML5拖放


拖放是HTML5標準的一部分。


拖動圖像上方插入到矩形。


在HTML

HTML5的工作草案規範包括拖放支持。 HTML5支持不同類型的拖放功能,包括:

  • 拖放文本和HTML代碼
  • 拖放HTML元素
  • 拖放文件

根據需要採取行動,在上述類型之一都可以使用。 注意,當一個HTML元素被拖動,用於移動其當前位置,其ID被發送到目的地父元素; 所以它發送的文本和可視為第一組。

谷歌的基於Web的電子郵件應用程序的Gmail支持最新的谷歌Chrome瀏覽器和蘋果的Safari(5.x的)圖像和附件的拖和下降。 而谷歌圖片搜索支持拖放。


拖放

拖放是一個非常普遍的特徵。 這是當你"grab"的對象,並將其拖動到不同的位置。

在HTML5,拖放是標準的一部分,任何元素可以是拖動。


瀏覽器支持

在表中的數字規定,完全支持拖放第一個瀏覽器版本。

API
Drag and Drop 4 9 3.5 6 12.0

HTML拖放實施例

下面的例子是一個簡單的拖放例如:

<!DOCTYPE HTML>
<html>
<head>
<script>
function allowDrop(ev) {
    ev.preventDefault();
}

function drag(ev) {
    ev.dataTransfer.setData("text", ev.target.id);
}

function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("text");
    ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

<img id="drag1" src="img_logo.gif" draggable="true"
ondragstart="drag(event)" width="336" height="69">

</body>
</html>
試一試»

這似乎很複雜,但讓我們去通過拖放事件的所有不同部分。


做一個可拖動的元素

首先:為了使元素可拖動,設定的draggable屬性為true

<img draggable="true">

什麼拖動- ondragstart和setData()

然後,指定的元素是被拖動的時候會發生什麼。

在上面的例子中, ondragstart屬性調用一個函數, drag(event) ,它指定什麼被拖動數據。

dataTransfer. setData() dataTransfer. setData()方法將數據類型和拖動的數據的值:

function drag(ev) {
    ev.dataTransfer. setData("text", ev.target.id) ;
}

在這種情況下,數據類型是"text"和值是可拖動元素的id ("drag1")


哪裡掉下- ondragover

ondragover事件指定了拖動的數據可以被丟棄。

默認情況下,數據/元素不能被其他元素下降。 要允許降,一定要防止元素的默認處理。

這是通過調用完成event. preventDefault() event. preventDefault()用於方法ondragover事件:

event . preventDefault()

不要投遞 - ondrop

當拖動的數據被刪除,出現下降的事件。

在上面的例子中, ondrop屬性調用一個函數, drop(event)

function drop(ev) {
    ev. preventDefault() ;
    var data = ev.dataTransfer. getData("text") ;
    ev.target. appendChild(document.getElementById(data) );
}

代碼解釋:

  • 調用preventDefault()來防止數據的瀏覽器默認處理(default is open as link on drop)
  • 獲取與拖動的數據dataTransfer. getData() dataTransfer. getData()方法。 此方法將返回被設置為相同的類型中的任何數據setData()方法
  • 拖動的數據是被拖動的元素的id ("drag1")
  • 追加拖動的元素進入drop元素

拖動圖像來回
如何拖動(and drop)的圖像背面和兩個之間來回<div>元素。