HTML5 拖拽复制移动元素

 
  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title></title>
  8. <style>
  9. #copy,#move{
  10. border: 1px solid #000;
  11. width: 300px;
  12. height: 200px;
  13. }
  14. #copyTarget,#moveTarget{
  15. width: 300px;
  16. height: 200px;
  17. border: 1px solid #FF0000;
  18. }
  19. #newId{
  20. width: 200px;
  21. height: 50px;
  22. border: 1px solid darkcyan;
  23. }
  24. </style>
  25. </head>
  26. <body>
  27. <h2>使用拖拽实现移动和复制功能</h2>
  28. <div draggable="true" id="copy">要复制的元素</div>
  29. <div id="copyTarget"></div>
  30. <div draggable="true" id="move">要移动的元素</div>
  31. <div id="moveTarget"></div>
  32. <script type="text/javascript">
  33. window.onload = function() {
  34. // 复制
  35. $('copy').ondragstart = handler_dragstart;
  36. $('copy').ondragend = handler_dragend;
  37. $('copyTarget').ondragover = hander_dragover;
  38. $('copyTarget').ondragleave = handler_dragLeave
  39. $('copyTarget').ondrop = handler_drop;
  40.  
  41. // 移动
  42. $('move').ondragstart = handler_dragstart;
  43. $('move').ondragend = handler_dragend;
  44. $('moveTarget').ondragover = hander_dragover;
  45. $('moveTarget').ondragleave = handler_dragLeave
  46. $('moveTarget').ondrop = handler_drop;
  47.  
  48. function handler_dragstart(event) {
  49. console.log('拖拽开始');
  50. // 设置数据
  51. event.dataTransfer.setData('text/plain', event.target.id);
  52. // 设置拖动效果 设置既复制又移动
  53. event.effectAllowed = 'copyMove';
  54.  
  55. }
  56. function handler_dragend(event) {
  57. // 拖动操作完成时 清空设置的数据
  58. // event.target.style.borderColor = 'black';
  59. event.dataTransfer.clearData();
  60.  
  61. }
  62. // 当被拖动元素在目标元素内时触发
  63. function hander_dragover(event) {
  64. event.target.style.background = 'lightblue';
  65. event.preventDefault();
  66. }
  67. function handler_drop(event) {
  68. event.preventDefault();
  69. // 获取设置的数据
  70. var id = event.dataTransfer.getData('text/plain');
  71. if (id === 'copy' && event.target.id == 'copyTarget') {
  72. var nodeCopy = document.getElementById(id).cloneNode(true);
  73. nodeCopy.id = 'newId';
  74. event.target.appendChild(nodeCopy);
  75. }
  76. if(id === 'move' && event.target.id == 'moveTarget'){
  77. event.target.appendChild(document.getElementById(id));
  78. console.log(event.target.children);
  79. }
  80.  
  81. }
  82. function handler_dragLeave(event) {
  83. event.target.style.background = 'white';
  84. event.preventDefault();
  85.  
  86. }
  87. function $(ele) {
  88. return document.getElementById(ele);
  89. }
  90.  
  91. }
  92. </script>
  93. </body>
  94. </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值