拖放(Drag 和 Drop)是很常见的特性。它指的是您抓取某物并拖入不同的位置。
    拖放是 HTML5 标准的组成部分:任何元素都是可拖放的

    demo:

    1. <!DOCTYPE html>
    2. <html>
    3. <meta charset="utf-8" />
    4. <style>
    5. #drop{
    6. width: 150px;
    7. height: 150px;
    8. border: #000 1px solid;
    9. }
    10. </style>
    11. <script>
    12. function allowDrop(e) {
    13. e.preventDefault();
    14. console.info("拖到了这里")
    15. }
    16. function drag(ev) {
    17. console.info("开始drag拖动")
    18. ev.dataTransfer.setData("text", ev.target.id);
    19. }
    20. function drop(ev) {
    21. ev.preventDefault();
    22. var data = ev.dataTransfer.getData("text");
    23. ev.target.appendChild(document.getElementById(data));
    24. console.info("放好了")
    25. }
    26. </script>
    27. <body>
    28. <section id="drag" draggable="true" ondragstart="drag(event)">
    29. 把我拖走
    30. </section>
    31. <section id="drop" ondrop="drop(event)" ondragover="allowDrop(event)">
    32. 放到这里
    33. </section>
    34. </body>
    35. </html>

    上面是两个section元素,id为drag的元素被拖动,放置到id为drop的元素中,

    使用draggable把元素设置为可拖放

    1. <section id="drop" draggable="true">

    ondragstart:开始拖动时调用drag方法

    ondragover:id为drag的元素被拖动到了id为drop的元素上方时,调用allowDrop方法

    ondrop:放置完成时调用drop方法

    来回拖放

    1. <!DOCTYPE html>
    2. <html>
    3. <meta charset="utf-8" />
    4. <style>
    5. section{
    6. width: 150px;
    7. height: 150px;
    8. border: #000 1px solid;
    9. }
    10. </style>
    11. <script>
    12. function allowDrop(e) {
    13. e.preventDefault();
    14. console.info("拖到了这里")
    15. }
    16. function drag(ev) {
    17. console.info("开始drag拖动")
    18. ev.dataTransfer.setData("text", ev.target.id);
    19. }
    20. function drop(ev) {
    21. ev.preventDefault();
    22. var data = ev.dataTransfer.getData("text");
    23. ev.target.appendChild(document.getElementById(data));
    24. console.info("放好了")
    25. }
    26. </script>
    27. <body>
    28. <section id="box1" ondrop="drop(event)" ondragover="allowDrop(event)">
    29. </section>
    30. <p id="drag" draggable="true" ondragstart="drag(event)">把我拖走</p>
    31. <section id="box2" ondrop="drop(event)" ondragover="allowDrop(event)">
    32. </section>
    33. </body>
    34. </html>