溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

HTML5實(shí)現(xiàn)元素拖拽的方法

發(fā)布時(shí)間:2021-07-02 11:01:51 來源:億速云 閱讀:168 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細(xì)講解有關(guān)HTML5實(shí)現(xiàn)元素拖拽的方法,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

先上示例:

index.html

XML/HTML Code復(fù)制內(nèi)容到剪貼板

  1. <!doctype html>  

  2. <html>  

  3. <head>  

  4.     <meta charset="UTF-8">  

  5.     <title>Drag</title>  

  6.     <style>  

  7.         .box{   

  8.             width: 400px;   

  9.             height: 400px;   

  10.             float: left;   

  11.         }   

  12.         #box1{   

  13.             background: #CCC;   

  14.         }   

  15.         #box2{   

  16.             background: #FF0;   

  17.         }   

  18.     </style>  

  19. </head>  

  20. <body>  

  21. <div id="box1" class="box"></div>  

  22. <div id="box2" class="box"></div>  

  23. <img src="https://cache.yisu.com/upload/information/20210312/296/134176.jpg" alt="" id="img1" />  

JavaScript Code復(fù)制內(nèi)容到剪貼板

  1. <script src="app1.js"></script>   

  2. </body>   

  3. </html>   

  4.   

  5. app1.js   

  6. /**  

  7.  *   app1.js  

  8.  */  

  9.   

  10. var oBox1,   

  11.     oBox2,   

  12.     oImg1;   

  13.   

  14. window.onload = function(){   

  15.     oBox1 = document.getElementById('box1');   

  16.     oBox2 = document.getElementById('box2');   

  17.     oImg1 = document.getElementById('img1');   

  18.   

  19.     //   

  20.     oBox1.ondragover = oBox2.ondragover = function(e){   

  21.         e.preventDefault();   

  22.     };   

  23.   

  24.     //   

  25.     oImg1.ondragstart = function(e){   

  26.         e.dataTransfer.setData('text', e.target.id);   

  27.     };   

  28.   

  29.     oBox1.ondrop = dropImg;   

  30.     oBox2.ondrop = dropImg;   

  31. };   

  32.   

  33. function dropImg(e){   

  34.     e.preventDefault();   

  35.     var tempImg = document.getElementById(e.dataTransfer.getData('text'));   

  36.     e.target.appendChild(tempImg);   

  37. }    

涉及知識(shí)點(diǎn)

在拖放的過程中會(huì)觸發(fā)以下事件:
在拖動(dòng)目標(biāo)上觸發(fā)事件 (源元素)
  ondragstart - 用戶開始拖動(dòng)元素時(shí)觸發(fā)
  ondrag - 元素正在拖動(dòng)時(shí)觸發(fā)
  ondragend - 用戶完成元素拖動(dòng)后觸發(fā)

釋放目標(biāo)時(shí)觸發(fā)的事件
  ondragenter - 當(dāng)被鼠標(biāo)拖動(dòng)的對(duì)象進(jìn)入其容器范圍內(nèi)時(shí)觸發(fā)此事件
  ondragover - 當(dāng)某被拖動(dòng)的對(duì)象在另一對(duì)象容器范圍內(nèi)拖動(dòng)時(shí)觸發(fā)此事件
  ondragleave - 當(dāng)被鼠標(biāo)拖動(dòng)的對(duì)象離開其容器范圍內(nèi)時(shí)觸發(fā)此事件
  ondrop - 在一個(gè)拖動(dòng)過程中,釋放鼠標(biāo)鍵時(shí)觸發(fā)此事件

event對(duì)象(以e代替)

e.target

  W3Cschool上的解釋是:返回觸發(fā)此事件的元素(事件的目標(biāo)節(jié)點(diǎn)),這個(gè)target屬性只兼容ie9及以上

e.preventDefault()

  取消事件的默認(rèn)動(dòng)作。

e.dataTransfer.setData()

  設(shè)置被拖數(shù)據(jù)的數(shù)據(jù)類型和值:

代碼如下:

e.dataTransfer.setData("Text",ev.target.id);       //第一個(gè)參數(shù)為Text(小寫的也行)

e.dataTransfer.getData()

  獲得被拖的數(shù)據(jù):

代碼如下:

e.dataTransfer.getData("Text");

關(guān)于“HTML5實(shí)現(xiàn)元素拖拽的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI