在页面中设置2个框:一个是被拖放的框,一个是拖放的目的地框。在拖动的时候,只有当鼠标位于拖放的目的地框上方的时候,放开鼠标的时候,被拖放的框,才被移动到鼠标所在的位置;而在其他地方放开鼠标的时候,被拖放的框都要返回原来的位置(即拖放之前的位置)。要显示拖放过程,即拖动过程中,被拖放的框要和鼠标一起移动。
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Document</title>
- <style>
- .drag {
- width: 50px;
- height: 50px;
- background: #1fbb8a;
- border-radius: 10px;
- float:right;
- text-align: center;
- line-height: 50px;
- }
-
- .target {
- width: 300px;
- height: 300px;
- border: 1px dashed #000;
- background: #9ff1ff;
- text-align: center;
- line-height: 135px;
- top: 0;
- right: 0;
- }
- </style>
-
- </head>
-
- <body>
- <div class="target">target</div>
- <div class="drag" draggable="true">drag</div>
-
- <script>
- var drag = document.getElementsByClassName('drag')[0],
- target = document.getElementsByClassName('target')[0];
-
- target.addEventListener('dragover', function (e) {
- e.preventDefault();//需要阻止dragover的默认行为才会触发drop事件
- // console.log('dragover');
- })
-
- target.addEventListener('drop', function () {
- this.appendChild(drag);
- })
-
-
-
- </script>
- </body>
-
- </html>