<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * { padding: 0; margin: 0; } .div1, .div2, .div3 { margin: 0 20px; float: left; width: 200px; height: 200px; border: 1px solid #000; } div{ display: flex; flex-direction: column; align-items: center } p{ display: flex; flex-direction: column; align-items: center } .p1 { width: 50px; background-color: pink; margin: 5px 0; } .p2 { width: 80px; background-color: burlywood; margin: 5px 0; } .p3 { width: 110px; background-color: rgb(133, 88, 29); margin: 5px 0; } .p4 { width: 140px; background-color: rgb(172, 37, 48); margin: 5px 0; } .p5 { width: 170px; background-color: rgb(17, 182, 31); margin: 5px 0; } .p6 { width: 200px; background-color: rgb(90, 33, 155); margin: 5px 0; } </style> </head> <body> <div id="div1" class="div1"> <!-- 在h5中,若是想拖拽元素,就必須爲元素添加draggable="true"。圖片和超連接默認就能夠拖拽 --> <p id="pe3" class="p3" draggable="true">3</p> <p id="pe2" class="p2" draggable="true">2</p> <p id="pe5" class="p5" draggable="true">5</p> <p id="pe1" class="p1" draggable="true">1</p> <p id="pe6" class="p6" draggable="true">6</p> <p id="pe4" class="p4" draggable="true">4</p> </div> <div id="div2" class="div2"></div> <div id="div3" class="div3"></div> <script> /* 拖拽元素支持的事件 ondrag 應用於拖拽元素,整個拖拽過程都會調用 ondragstart 應用於拖拽元素,當拖拽開始時調用 ondragleave 應用於拖拽元素,當鼠標離開拖拽元素是調用 ondragend 應用於拖拽元素,當拖拽結束時調用 目標元素支持的事件 ondragenter 應用於目標元素,當拖拽元素進入時調用 ondragover 應用於目標元素,當停留在目標元素上時調用 ondrop 應用於目標元素,當在目標元素上鬆開鼠標時調用 ondragleave 應用於目標元素,當鼠標離開目標元素時調用 */ // var obj = null; /* 當前被拖拽的值*/ document.ondragstart = function (e) { /*經過dataTransfer來實現數據的存儲與獲取 setData(format, data) format: 數據的類型: text/html text/uri-list Data: 數據: 通常來講是字符串值 */ // e.dataTransfer.setData("Text", e.target.id); e.target.style.opacity = 0.5 e.dataTransfer.setData("text", e.target.id); console.log(e.target.id) } document.ondragend = function (e) { e.target.style.opacity = 1; } /*瀏覽器默認會阻止ondrop事件:咱們必須在ondrapover中阻止默認行爲*/ document.ondragover = function (e) { e.preventDefault(); } document.ondrop = function (e) { /*經過e.dataTransfer.setData存儲的數據,只能在drop事件中獲取*/ var data = e.dataTransfer.getData("text"); e.target.appendChild(document.getElementById(data)); } </script> </body> </html>