通过拖拽添加dom和一些属性

将图片通过拖拽添加到指定位置

在这里插入图片描述

<template>
  <div class="draggle-box">
    <img
      class="draggle-source"
      src="@/assets/bg/cat.jpg"
      @dragstart="handleDragStart($event, '图片')"
    />
    <div
      class="draggle-target"
      @dragover="handleDragOver"
      @drop="handleDrop($event)"
    ></div>
  </div>
</template>

<script setup>
import { ref, reactive } from "vue";
const handleDragStart = (event, props) => {
  let draggleProps = {
    src: event.target.getAttribute("src"),
    type: props,
  };
  event.dataTransfer.setData("text/plain", JSON.stringify(draggleProps));
};
const handleDragOver = (event) => {
  event.preventDefault();
};
const handleDrop = (event) => {
  console.log(event);

  event.preventDefault();
  let draggleProps = JSON.parse(event.dataTransfer.getData("text/plain"));
  let img = document.createElement("img");
  img.src = draggleProps.src;
  img.style.width = "100px";
  img.style.height = "100px";
  let text = document.createElement("text");
  text.textContent = draggleProps.type;
  event.target.appendChild(img);
  event.target.appendChild(text);
};
</script>

<style scoped lang="less">
.draggle-box {
  border: 1px solid black;
  width: 600px;
  height: 600px;
  margin: 0 auto;
}
.draggle-target {
  width: 200px;
  height: 200px;
  background-color: turquoise;
  margin: 100px 0 100px 100px;
}
.draggle-source {
  width: 100px;
  height: 100px;
  cursor: grab;
}
</style>

相关博文:看完就懂的前端拖拽那些事

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值