搜尋
首頁web前端H5教程HTML5元素拖曳drag與拖放drop相關API的具體介紹(圖文)

其實HTML5就是新增一些有用的API
讓我們更輕鬆的開發
從而把更多精力都放在業務邏輯上來
這些API的使用也非常簡單
不過我的記性不太好
所以還是以部落格的形式記錄下來(手動滑稽)
今天就來寫一下這個拖曳API

預設拖曳

說起拖放,其實最早實現拖曳功能的還是IE(IE4)
H5就是在IE實例的基礎上指定的拖曳規範
在瀏覽器中,是有預設拖曳的
比如說圖片的拖曳

選取文字的拖曳

連結的拖曳

#元素拖曳

瀏覽器預設允許我們拖曳圖像、文字以及連結
讓其它元素被拖曳也是可以實現的
只需要在元素標籤上新增一個屬性

<p draggable="true"></p>

當拖曳這個元素的時候,瀏覽器就會以半透明複本的方式顯示

拖曳事件

拖曳事件應該分為兩類
一類是被拖曳元素觸發的事件
另一類是拖曳目標元素觸發的事件

<p id="source" draggable="true"></p><p id="target"></p>  <!-- 样式略 -->
var source = document.getElementById(&#39;source&#39;);var target = document.getElementById(&#39;target&#39;);

拖曳元素

#拖曳元素的時候,被拖曳元素會觸發以下事件

  • dragstart

  • drag

  • dragend

當滑鼠點中元素並且開始移動時,就會觸發dragstart事件(類比mousedown)
拖曳過程中會持續不斷地觸發drag事件(類比mousemove)
放開滑鼠取消拖曳時就會觸發dragend事件(類比mouseup)

source.ondragstart = function(){
  console.log(&#39;开始拖拽&#39;);
}source.ondrag = function(){
  console.log(&#39;拖拽中&#39;);
}source.ondragend = function(){
  console.log(&#39;拖拽结束&#39;);
}

#目標元素

當拖曳的元素拖曳到一個目標元素上時,目標元素會觸發下列事件

  • dragenter

  • dragover

  • #dragleave






## drop



拖曳元素到目標上,就會觸發dragenter事件(類比mouseover) 當拖曳元素在目標元素中,就會持續觸發dragover事件

離開目標元素,觸發dragleave事件(類比mouseout)

若拖放元素到了目標元素中(在目標元素中放開滑鼠),就會觸發drop事件而不會觸發dragleave事件

target.ondragenter = function(){
  console.log(&#39;拖动进入目标元素&#39;);
}target.ondragover = function(){
  console.log(&#39;目标元素中拖拽&#39;);
}target.ondragleave = function(){
  console.log(&#39;拖动离开目标元素&#39;);
}target.ondrop = function(){
  console.log(&#39;拖放&#39;);
}



這時我們會發現元素拖曳到目標元素中時
並沒有觸發drop事件


我們看到了一個特殊的遊標(圓環+反斜線)

意思就是無效的拖放
所以導致沒有觸發drop事件
也就是說元素預設是不能夠拖放
只要我們在
目標元素的dragover事件中取消預設事件

就可以解決問題

target.ondragover = function(e){
  console.log(&#39;目标元素中拖拽&#39;);
  e.preventDefault(); //增}

資料交換


#只是簡單的拖放毫無意義

我們需要進行資料交換

而這個用語資料交換的物件就是事件物件的屬性

dataTransfer

dataTransfer的兩個核心方法是setData()和getData()

setData()用於設定數據,getData()用語接收資料

event.dataTransfer.setData(&#39;text&#39;,&#39;some text&#39;);
var text = event.dataTransfer.getData(&#39;text&#39;);//保存在dataTransfer中的数据只能在drop事件处理函数中处理

如果我們拖曳了選取文字
那麼瀏覽器預設就會呼叫dataTransfer.setData,設定對應文字資料setData()和getData()就是資料類型的字串IE定義的資料類型除了「text」文字類型還有「URL」 H5對它進行了擴展,可以指定各種MIME類型

但為了向後相容,它同樣支援“text”和“URL”

它們會被分別映射為“text/plain”和“text/uri-list”

如果資料保存為URL,瀏覽器會做特殊處理,把它當成網頁連結
(所以拖曳連結到另外的瀏覽器視窗就會打開網頁)

  • 必要的話,我們可以手動儲存需要傳輸的資料

    var source = document.getElementById(&#39;source&#39;);var target = document.getElementById(&#39;target&#39;);
    source.ondragstart = function(e){
      e.dataTransfer.setData('text','传递文本数据');
    }
    target.ondragover = function(e){
      e.preventDefault();
    }
    target.ondrop = function(e){
      console.log(e.dataTransfer.getData('text'));
    }

  • 拖曳設定

  • 在dataTransfer中還有兩個重要的屬性
  • dropEffect

    和###effectAllowed# ########dropEffect######dropEffect屬性值為字串,表示被拖曳元素可以執行哪一種放置行為###要使用這個屬性,必須在dragenter事件處理函數中設置############none 不能把元素拖放至此(除文字方塊外全部元素的預設值)############move 移動到目標#### ########copy 複製到目標###
  • link 目標開啟拖曳元素(拖曳元素必須是連結並有URL)

effectAllowed

effectAllowed屬性值也是字符串,表示允許拖曳元素哪一種dropEffect
要使用這個屬性,必須在dragst事件處理函數中設定

  • uninitialized 沒有設定任何拖曳行為

  • none 不能由任何行為

  • copy 僅允許dropEffect值為copy

  • link 僅允許dropEffect值為link

  • move 僅允許dropEffect值為move

  • #copyLink 允許dropEffect值為copy和link

########## #copyMove 允許dropEffect值為copy和move#############linkMove 允許dropEffect值為link和move############all 允許任意dropEffect##### ####

以上是HTML5元素拖曳drag與拖放drop相關API的具體介紹(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
H5代碼:Web結構的初學者指南H5代碼:Web結構的初學者指南May 08, 2025 am 12:15 AM

HTML5構建網站的方法包括:1.使用語義化標籤定義網頁結構,如、、等;2.嵌入多媒體內容,使用和標籤;3.應用表單驗證和本地存儲等高級功能。通過這些步驟,你可以創建一個結構清晰、功能豐富的現代網頁。

H5代碼結構:組織內容以實現可讀性H5代碼結構:組織內容以實現可讀性May 07, 2025 am 12:06 AM

通過合理的H5代碼結構可以讓頁面在眾多內容中脫穎而出。 1)使用語義化標籤如、、等組織內容,使結構清晰。 2)通過CSS佈局如Flexbox或Grid控制頁面在不同設備上的呈現效果。 3)實現響應式設計,確保頁面在不同屏幕尺寸上自適應。

H5與較舊的HTML版本:比較H5與較舊的HTML版本:比較May 06, 2025 am 12:09 AM

HTML5(H5)與舊版本HTML的主要區別包括:1)H5引入了語義化標籤,2)支持多媒體內容,3)提供離線存儲功能。 H5通過新標籤和API增強了網頁的功能和表現力,如和標籤,提高了用戶體驗和SEO效果,但需注意兼容性問題。

H5與HTML5:澄清術語和關係H5與HTML5:澄清術語和關係May 05, 2025 am 12:02 AM

H5和HTML5的區別在於:1)HTML5是網頁標準,定義結構和內容;2)H5是基於HTML5的移動網頁應用,適用於快速開發和營銷。

HTML5特徵:H5的核心HTML5特徵:H5的核心May 04, 2025 am 12:05 AM

HTML5的核心特性包括語義化標籤、多媒體支持、表單增強和離線存儲與本地存儲。 1.語義化標籤如、等提高了代碼可讀性和SEO效果。 2.多媒體支持通過和標籤簡化了嵌入媒體內容的過程。 3.表單增強引入了新的輸入類型和驗證屬性,簡化了表單開發。 4.離線存儲和本地存儲通過ApplicationCache和localStorage等提高了網頁性能和用戶體驗。

H5:探索最新版本的HTMLH5:探索最新版本的HTMLMay 03, 2025 am 12:14 AM

html5isamajorrevisionofthehtmlStandardThatRevolutionsWebDevelopmentBybyIntroDucingNewSemanticeLementSemelementsandAndCapabilities.1)itenhancesCodereAdabilityAndSeowitability andSeowithelientsLike,and.2)

超越基礎:H5代碼中的高級技術超越基礎:H5代碼中的高級技術May 02, 2025 am 12:03 AM

H5的高級技巧包括:1.利用進行複雜圖形繪製,2.使用WebWorkers提升性能,3.通過WebStorage增強用戶體驗,4.實現響應式設計,5.利用WebRTC實現實時通信,6.進行性能優化和最佳實踐。這些技巧幫助開發者構建更動態、互動和高效的Web應用。

H5:網絡內容和設計的未來H5:網絡內容和設計的未來May 01, 2025 am 12:12 AM

H5(HTML5)將通過新元素和API提升網頁內容和設計。 1)H5增強了語義化標記和多媒體支持。 2)它引入了Canvas和SVG,豐富了網頁設計。 3)H5的工作原理是通過新標籤和API擴展HTML功能。 4)基本用法包括使用創建圖形,高級用法涉及WebStorageAPI。 5)開發者需注意瀏覽器兼容性和性能優化。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。