拖放是一种常见的特性,即抓取对象以后拖到另一个位置,在HTML5中,拖放是标准的一部分,任何元素都能够拖放。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5拖放</title> <style type="text/css"> #div1 { width: 200px; height: 200px; background-color: deeppink; border:1px solid #aaaaaa; } #drag1{ width: 100px; height: 100px; background-color: lawngreen; } </style> <script> 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> <p>拖动小盒子到大盒子中:</p> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <br/> <div id="drag1" draggable="true" ondragstart="drag(event)"></div> </body> </html>
将一个可拖动的段落在两个框里来回拖动:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5拖放</title> <style type="text/css"> #div1, #div2 { float:left; width:200px; height:100px; margin:10px; border:1px solid #aaaaaa;} </style> <script> 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> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"> <p id="drag1" draggable="true" ondragstart="drag(event)">这是一个可拖动的段落</p> </div> <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div> </body> </html>
draggable 属性规定元素是否可拖动。
<element draggable="true|false|auto">
属性值
值 | 描述 |
---|---|
true | 规定元素是可拖动的。 |
false | 规定元素是不可拖动的。 |
auto | 使用浏览器的默认特性。 |