赞
踩
事件 | 描述 | 监听对象 |
ondragstart | 该事件在用户开始拖动元素时触发 | 被拖拽物体 |
drag | 该事件在元素正在拖动时触发 | 被拖拽物体 |
ondragend | 该事件在用户完成元素的拖动时触发 | 被拖拽物体 |
ondragenter | 该事件在拖动的元素进入放置目标时触发 | 放入的区域 |
ondragover | 该事件在拖动元素在放置目标上时触发 | 放入的区域 |
ondrop | 该事件在拖动元素放置在目标区域时触发 | 放入的区域 |
ondragleave | 该事件在拖动元素离开放置目标时触发 | 放入的区域 |
- <template>
- <div :class="$options.name">
- <div class="drag" draggable @dragstart="dragstart" @drag="drag" @dragend="dragend" >被拖拽物体</div>
- <div class="drop" @dragover="$event.preventDefault()" @dragenter="dragenter" @drop="drop" @dragleave="dragleave" >放入的位置1</div>
- <div class="drop" @dragover="$event.preventDefault()" @dragenter="dragenter" @drop="drop" @dragleave="dragleave" >放入的位置2</div>
- </div>
- </template>
- <script>
- export default {
- name: "testDrag",
- methods: {
- // 被拖拽物体的监听事件----------------------------------------
- dragstart(e) {
- let 需要传输的内容 = {
- cssText: `background-color: #F56C6C;color: white;font-size: 24px;`,
- text: `物体被放进来了`,
- };
- e.dataTransfer.setData("自定义字段名", JSON.stringify(需要传输的内容));
- },
- drag(e) {
- e.currentTarget.setAttribute("drag", true);
- },
- dragend(e) {
- e.currentTarget.removeAttribute("drag");
- },
-
- // 放置区域的监听事件----------------------------------------
- dragenter(e) {
- e.currentTarget.setAttribute("dragenter", true);
- },
- drop(e) {
- e.currentTarget.removeAttribute("dragenter");
- let 需要传输的内容 = JSON.parse(e.dataTransfer.getData("自定义字段名"));
- e.currentTarget.style.cssText = 需要传输的内容.cssText;
- e.currentTarget.innerHTML = 需要传输的内容.text;
- },
- dragleave(e) {
- e.currentTarget.removeAttribute("dragenter");
- },
- },
- };
- </script>
- <style lang="scss" scoped>
- .testDrag {
- .drag {
- width: 100px;
- height: 100px;
- box-sizing: border-box;
- border: 1px solid #eee;
- display: flex;
- justify-content: center;
- align-items: center;
- position: relative;
- &[drag] {
- color: #f56c6c;
- border-color: #f56c6c;
- &::after {
- content: "拖拽中";
- position: absolute;
- right: 0;
- top: 0;
- background-color: #f56c6c;
- color: white;
- font-size: 14px;
- }
- }
- }
- .drop {
- margin-top: 20px;
- width: 200px;
- height: 200px;
- box-sizing: border-box;
- border: 1px solid #eee;
- display: flex;
- justify-content: center;
- align-items: center;
- flex-direction: column;
- position: relative;
- &[dragenter] {
- color: #f56c6c;
- border-color: #f56c6c;
- &::after {
- content: "物体进入区域";
- position: absolute;
- right: 0;
- top: 0;
- background-color: #f56c6c;
- color: white;
- font-size: 14px;
- }
- }
- }
- }
- </style>
进阶的玩法
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。