您好,登錄后才能下訂單哦!
小編給大家分享一下html5如何實現拖放功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
html5的拖放
1)創建來源項目
1.1)draggable屬性的值:
true——此元素能被拖動;
false——此元素不能被拖動;
auto——瀏覽器能夠自主決定某個元素能否被拖動;
1.2)被拖動元素的事件:
dragstart——在元素開始被拖動時觸發;
drag——在元素被拖動時重復觸發。
dragend——在拖動操作完畢時觸發;
2)創建釋放區
2.1)釋放區事件:
dragenter——當被拖動元素進入釋放區所占領的屏幕空間時觸發;
dragover——當被拖動元素在釋放區內觸發時移動觸發;
dragleave——當被拖動元素沒有放入就離開釋放區時觸發;
drop——當被拖動元素在釋放區放下時觸發。
<!DOCTYPE HTML> <html> <head> <title>Example</title> <style> #src > * {float:left;} #src > img {border: thin solid black; padding: 2px; margin:4px;} #target {border: thin solid black; margin:4px;} #target { height: 81px; width: 81px; text-align: center; display: table;} #target > p {display: table-cell; vertical-align: middle;} img.dragged {background-color: lightgrey;} </style> </head> <body> <p id="src"> <img draggable="true" id="banana" src="banana100.png" alt="banana"/> <img draggable="true" id="apple" src="apple100.png" alt="apple"/> <img draggable="true" id="cherries" src="cherries100.png" alt="cherry"/> <p id="target"> <p id="msg">Drop Here</p> </p> </p> <script> var src = document.getElementById("src"); var target = document.getElementById("target"); var msg = document.getElementById("msg"); var draggedID; target.ondragenter = handleDrag; target.ondragover = handleDrag; function handleDrag(e) { e.preventDefault(); } target.ondrop = function(e) { var newElem = document.getElementById(draggedID).cloneNode(false); target.innerHTML = ""; target.appendChild(newElem); e.preventDefault(); } src.ondragstart = function(e) { draggedID = e.target.id; e.target.classList.add("dragged"); } src.ondragend = function(e) { var elems = document.querySelectorAll(".dragged"); for (var i = 0; i < elems.length; i++) { elems[i].classList.remove("dragged"); } } </script> </body> </html>
3)使用DataTransfer對象
3.1)與拖放操作所觸發的事件同一時候派發的對象是DragEvent,它派生于MouseEvent。
DragEvent對象定義的額外屬性:
dataTransfer——返回用于數據傳輸到釋放區的對象(DataTransfer);
3.2)DataTransfer對象定義的屬性:
types——返回數據的格式。
getData(<format>)——返回指定格式的數據;
setData(<format>,<data>)——設置指定格式的數據。
clearData(<format>)——移除指定格式的數據。
files——返回已被拖動文件的列表。
<!DOCTYPE HTML> <html> <head> <title>Example</title> <style> #src > * {float:left;} #src > img {border: thin solid black; padding: 2px; margin:4px;} #target {border: thin solid black; margin:4px;} #target { height: 81px; width: 81px; text-align: center; display: table;} #target > p {display: table-cell; vertical-align: middle;} img.dragged {background-color: lightgrey;} </style> </head> <body> <p id="src"> <img draggable="true" id="banana" src="banana100.png" alt="banana"/> <img draggable="true" id="apple" src="apple100.png" alt="apple"/> <img draggable="true" id="cherries" src="cherries100.png" alt="cherry"/> <p id="target"> <p id="msg">Drop Here</p> </p> </p> <script> var src = document.getElementById("src"); var target = document.getElementById("target"); target.ondragenter = handleDrag; target.ondragover = handleDrag; function handleDrag(e) { e.preventDefault(); } target.ondrop = function(e) { var droppedID = e.dataTransfer.getData("Text"); var newElem = document.getElementById(droppedID).cloneNode(false); target.innerHTML = ""; target.appendChild(newElem); e.preventDefault(); } src.ondragstart = function(e) { e.dataTransfer.setData("Text", e.target.id); e.target.classList.add("dragged"); } src.ondragend = function(e) { var elems = document.querySelectorAll(".dragged"); for (var i = 0; i < elems.length; i++) { elems[i].classList.remove("dragged"); } } </script> </body> </html>
3.3)拖放文件:
File對象定義的屬性
name——獲取文件名稱。
type——獲取文件類型。以MIME類型表示;
size——獲取文件大小(以字節計算);
<!DOCTYPE HTML> <html> <head> <title>Example</title> <style> .table {display:table;} .row {display:table-row;} .cell {display: table-cell; padding: 5px;} .label {text-align: right;} #target {border: medium double black; margin:4px; height: 50px; width: 200px; text-align: center; display: table;} #target > p {display: table-cell; vertical-align: middle;} </style> </head> <body> <form id="fruitform" method="post" action="http://titan:8080/form"> <p class="table"> <p class="row"> <p class="cell label">Bananas:</p> <p class="cell"><input name="bananas" value="2"/></p> </p> <p class="row"> <p class="cell label">Apples:</p> <p class="cell"><input name="apples" value="5"/></p> </p> <p class="row"> <p class="cell label">Cherries:</p> <p class="cell"><input name="cherries" value="20"/></p> </p> <p class="row"> <p class="cell label">File:</p> <p class="cell"><input type="file" name="file"/></p> </p> <p class="row"> <p class="cell label">Total:</p> <p id="results" class="cell">0 items</p> </p> </p> <p id="target"> <p id="msg">Drop Files Here</p> </p> <button id="submit" type="submit">Submit Form</button> </form> <script> var target = document.getElementById("target"); var httpRequest; var fileList; document.getElementById("submit").onclick = handleButtonPress; target.ondragenter = handleDrag; target.ondragover = handleDrag; function handleDrag(e) { e.preventDefault(); } target.ondrop = function(e) { fileList = e.dataTransfer.files; e.preventDefault(); } function handleButtonPress(e) { e.preventDefault(); var form = document.getElementById("fruitform"); var formData = new FormData(form); if (fileList || true) { for (var i = 0; i < fileList.length; i++) { formData.append("file" + i, fileList[i]); } } httpRequest = new XMLHttpRequest(); httpRequest.onreadystatechange = handleResponse; httpRequest.open("POST", form.action); httpRequest.send(formData); } function handleResponse() { if (httpRequest.readyState == 4 && httpRequest.status == 200) { var data = JSON.parse(httpRequest.responseText); document.getElementById("results").innerHTML = "You ordered " + data.total + " items"; } } </script> </body> </html>
以上是“html5如何實現拖放功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。