選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

HTML 教程

HTML 首頁 HTML 簡介 HTML 編輯器 HTML 基礎 HTML 元素 HTML 屬性 HTML 標題 HTML 段落 HTML 樣式 HTML 格式化 HTML 引用 HTML 註釋 HTML 顏色 HTML CSS HTML 連結 HTML 影像 HTML 收藏夾圖示 HTML 頁面標題 HTML 表格 HTML 列表 HTML 塊和內聯元素 HTML Div HTML 類 HTML Id HTML Iframes HTML JavaScript HTML 檔案路徑 HTML Head HTML 佈局 HTML 響應式 HTML Computercode HTML 語義化 HTML 風格指南 HTML 實體 HTML 符號 HTML 表情符號 HTML 字元集 HTML URL 編碼 HTML 與 XHTML

HTML 表單

HTML 表單 HTML 表單屬性 HTML 表單元素 HTML 輸入型別 HTML 輸入屬性 輸入表單屬性

HTML 圖形

HTML Canvas HTML SVG

HTML 媒體

HTML 媒體 HTML 影片 HTML 音訊 HTML 外掛 HTML YouTube

HTML API

HTML 地理定位 HTML 拖放 HTML Web 儲存 HTML Web Workers HTML SSE

HTML 示例

HTML 示例 HTML 編輯器 HTML 測驗 HTML 練習 HTML 網站 HTML 面試準備 HTML 新兵訓練營 HTML 證書 HTML 摘要 HTML 無障礙性

HTML 參考

HTML 標籤列表 HTML 屬性 HTML 全域性屬性 HTML 瀏覽器支援 HTML 事件 HTML 顏色 HTML Canvas HTML 音訊/影片 HTML Doctype HTML 字元集 HTML URL 編碼 HTML 語言程式碼 HTTP 訊息 HTTP 方法 PX 轉 EM 轉換器 鍵盤快捷鍵

HTML 拖放 API


在 HTML 中,任何元素都可以拖放。


示例

W3Schools

將 W3Schools 圖片拖放到矩形框中。


拖放

拖放是一項非常常見的操作。它是指“抓住”一個物件並將其拖動到另一個位置。


瀏覽器支援

表格中的數字表示完全支援拖放的第一個瀏覽器版本。

API
拖放 4.0 9.0 3.5 6.0 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() 方法設定拖動資料的資料型別和值。

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

在這種情況下,資料型別是“text”,值為可拖動元素的 id(“drag1”)。


在哪裡放置 - ondragover

ondragover 事件指定可以放置拖動資料的位置。

預設情況下,資料/元素不能放置在其他元素中。要允許放置,我們必須阻止元素的預設處理。

這透過為 ondragover 事件呼叫 event.preventDefault() 方法來完成。

event.preventDefault()

執行放置 - ondrop

當拖動的資料被放置時,會發生一個 drop 事件。

在上面的示例中,ondrop 屬性呼叫一個函式 drop(event)。

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

程式碼說明

  • 呼叫 preventDefault() 以阻止瀏覽器對資料的預設處理(預設是在放置時作為連結開啟)。
  • 使用 dataTransfer.getData() 方法獲取拖動的資料。此方法將返回在 setData() 方法中設定為相同型別的所有資料。
  • 被拖拽的資料是被拖拽元素的 ID ("drag1")
  • 將被拖拽的元素追加到放置元素中

更多示例

示例

如何在兩個 <div> 元素之間來回拖動(和放置)影像

自己動手試一試 »

×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援