HTML+CSS+JS实现:定义一个盒子,引入一张图片, 使图片可以拖入到盒子中
时间: 2023-12-20 15:07:37 浏览: 80
以下是一个 HTML+CSS+JS 实现图片拖拽到盒子中的示例:
```html
<!DOCTYPE html>
<html>
<head>
<title>拖拽图片到盒子中</title>
<style>
#box {
width: 300px;
height: 300px;
border: 1px solid black;
text-align: center;
line-height: 300px;
}
#box.dragging {
border-style: dashed;
}
</style>
</head>
<body>
<div id="box">将图片拖拽到此处</div>
<img id="image" src="https://picsum.photos/200" draggable="true">
<script>
var box = document.getElementById("box");
var image = document.getElementById("image");
// 监听图片拖拽开始事件
image.addEventListener("dragstart", function(event) {
event.dataTransfer.setData("text/plain", "image");
box.classList.add("dragging");
});
// 监听图片拖拽结束事件
image.addEventListener("dragend", function(event) {
box.classList.remove("dragging");
});
// 监听盒子拖拽进入事件
box.addEventListener("dragenter", function(event) {
event.preventDefault();
box.classList.add("dragging");
});
// 监听盒子拖拽离开事件
box.addEventListener("dragleave", function(event) {
box.classList.remove("dragging");
});
// 监听盒子拖拽放置事件
box.addEventListener("drop", function(event) {
event.preventDefault();
var data = event.dataTransfer.getData("text/plain");
if (data === "image") {
box.innerText = "图片已放置到此处";
}
box.classList.remove("dragging");
});
</script>
</body>
</html>
```
在这个示例中,我们定义了一个 `div` 元素作为盒子,并设置了一个 `#box` 的样式。我们还定义了一个带有 `draggable="true"` 属性的 `img` 元素。
在 JavaScript 中,我们首先获取了盒子和图片元素的引用。然后,我们监听了图片的 `dragstart` 和 `dragend` 事件,以及盒子的 `dragenter`、`dragleave` 和 `drop` 事件。
当图片开始拖拽时,我们在 `dataTransfer` 对象中设置一个数据。在这个例子中,我们设置了一个文本字符串 "image"。同时,我们给盒子添加了一个 `dragging` 类,以便在拖拽过程中改变盒子的样式。
当图片拖拽结束时,我们移除了盒子的 `dragging` 类。
当盒子被拖拽进入时,我们阻止了事件的默认行为,以便让盒子可以接收拖拽数据。同时,我们给盒子添加了一个 `dragging` 类,以改变盒子的样式。
当盒子被拖拽离开时,我们移除了盒子的 `dragging` 类。
当盒子被拖拽放置时,我们首先阻止了事件的默认行为,以便不让浏览器打开拖拽数据。然后,我们从 `dataTransfer` 对象中读取了之前设置的数据,并检查它是否为 "image"。如果是,我们将盒子的文本设置为 "图片已放置到此处"。最后,我们移除了盒子的 `dragging` 类。
这样,我们就成功地实现了图片拖拽到盒子中的效果。
阅读全文