当前位置:   article > 正文

一个简单的Vue2例子讲明白拖拽drag、移入dragover、放下drop的触发机制先后顺序_vue div dragover

vue div dragover

 

几个小细节说明:

  1. 执行顺序dragstart→dragover→drop
  2. 被拖拽的物体必须要设置draggable="true"(实际上只需要draggable就可以了,默认就是true),否者默认一般是不允许被拖拽的(图片除外)
  3. 被放入的位置必须要加上监听@dragover="$event.preventDefault()",否者不会触发@drop监听
  4. 如需要从被拖拽物体传递信息到放置区域中,可以使用e.target.dataTransfer的setData设置自定义的参数传值(字符串类型,如需传object请JSON.stringify一下下),使用e.target.dataTransfer的getData去获取对应的内容
  1. <template>
  2. <div :class="$options.name">
  3. <div class="drag" draggable @dragstart="dragstart">被拖拽物体</div>
  4. <div class="drop" @dragover="$event.preventDefault()" @drop="drop">放入的位置</div>
  5. </div>
  6. </template>
  7. <script>
  8. export default {
  9. name: "testDrag",
  10. methods: {
  11. dragstart(e) {
  12. let 需要传输的内容 = {
  13. cssText: `background-color: #F56C6C;color: white;font-size: 24px;`,
  14. text: `<p>支持HTML</p><br><b>显示这句话</b>`,
  15. };
  16. e.dataTransfer.setData("自定义字段名", JSON.stringify(需要传输的内容));
  17. },
  18. drop(e) {
  19. let 需要传输的内容 = JSON.parse(e.dataTransfer.getData("自定义字段名"));
  20. e.currentTarget.style.cssText = 需要传输的内容.cssText;
  21. e.currentTarget.innerHTML = 需要传输的内容.text;
  22. },
  23. },
  24. };
  25. </script>
  26. <style lang="scss" scoped>
  27. .testDrag {
  28. .drag {
  29. width: 100px;
  30. height: 100px;
  31. color: white;
  32. background-color: #f56c6c;
  33. display: flex;
  34. justify-content: center;
  35. align-items: center;
  36. }
  37. .drop {
  38. margin-top: 20px;
  39. width: 300px;
  40. height: 300px;
  41. background-color: #409eff;
  42. display: flex;
  43. justify-content: center;
  44. align-items: center;
  45. flex-direction: column;
  46. }
  47. }
  48. </style>

下一个进阶的例子,实现拖拽过程中,被放入的区域和放入的物体同时发生状态(样式)变化简单讲述ondragstart、drag、ondragend、ondragenter、ondragover、ondrop、ondragleave七个与拖拽相关的监听事件,并运用实现拖拽过程放置样式变化-CSDN博客文章浏览阅读81次。【代码】一个简单的Vue2例子讲明白拖拽drag、移入dragover、放下drop的触发机制先后顺序。一个简单的Vue2例子讲明白拖拽drag、移入dragover、放下drop的触发机制先后顺序-CSDN博客。时触发(即便不移动也会触发)https://blog.csdn.net/qq_37860634/article/details/136784325

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/498038
推荐阅读
相关标签
  

闽ICP备14008679号