首頁 > web前端 > H5教程 > 主體

Html5實作如何在兩個div元素之間拖放影像

高洛峰
發布: 2017-03-12 16:42:30
原創
1579 人瀏覽過

呼叫preventDefault() 來避免瀏覽器對資料的預設處理(drop 事件的預設行為是以連結形式開啟)透過dataTransfer. getData(Text) 方法獲得被拖的數據,有興趣的朋友可以參考下哈

原本效果

Html5實作如何在兩個div元素之間拖放影像

拖曳之後效果

Html5實作如何在兩個div元素之間拖放影像

程式碼如下

程式碼如下:

[code]
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
#p1, #p2
{float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;}
</style>
<script type="text/javascript">
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>
<img  src="/i/w3school_logo_black.gif" draggable="true" ondragstart="drag(event)" id="drag1" / alt="Html5實作如何在兩個div元素之間拖放影像" >
<p id="p1" ondrop="drop(event)" ondragover="allowDrop(event)">
 </p>
<p id="p2" ondrop="drop(event)" ondragover="allowDrop(event)"></p>
</body>
</html>

[/code]
登入後複製

它看上去也許有些複雜,不過我們可以分別研究拖放事件的不同部分。

設定元素為可拖放

首先,為了讓元素可拖曳,把draggable 屬性設為true :

程式碼如下:

<img  draggable="true" / alt="Html5實作如何在兩個div元素之間拖放影像" >
登入後複製

拖曳什麼- 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() 來避免瀏覽器對資料的預設處理(drop 事件的預設行為是以連結形式開啟)透過dataTransfer.getData("Text") 方法獲得被拖的數據。此方法將傳回在 setData() 方法中設定為相同類型的任何資料。被拖曳資料是被拖曳元素的 id ("drag1")把被拖曳元素追加到放置元素(目標元素)中

以上是Html5實作如何在兩個div元素之間拖放影像的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!