关注
要实现这个功能,我们可以使用HTML来构建界面,并用JavaScript来处理拖放逻辑。以下是一个简单的示例代码:
HTML部分(用于构建界面):
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lunch Distribution Module</title>
<style>
.food-item {
width: 100px;
height: 100px;
background-color: lightblue;
margin: 10px;
display: inline-block;
cursor: move;
}
#xiaoming-plate {
width: 300px;
height: 300px;
background-color: lightgreen;
position: relative;
margin-top: 20px;
}
.dragged-food {
position: absolute;
top: 0;
left: 0;
}
</style>
</head>
<body>
<div id="magnifier">
<div class="food-item" draggable="true"></div>
<div class="food-item" draggable="true"></div>
<div class="food-item" draggable="true"></div>
</div>
<div id="xiaoming-plate"></div>
<script src="script.js"></script>
</body>
</html>
```
JavaScript部分(用于处理拖放逻辑):
```javascript
document.addEventListener('DOMContentLoaded', (event) => {
const foodItems = document.querySelectorAll('.food-item');
const plate = document.getElementById('xiaoming-plate');
// 拖动开始事件
foodItems.forEach(item => {
item.addEventListener('dragstart', (e) => {
e.dataTransfer.setData('text/plain', e.target.cloneNode(true).outerHTML);
});
});
// 拖动结束事件
plate.addEventListener('dragover', (e) => {
e.preventDefault();
});
plate.addEventListener('drop', (e) => {
e.preventDefault();
const data = e.dataTransfer.getData('text/plain');
const food = document.createElement('div');
food.innerHTML = data;
food.classList.add('dragged-food');
plate.appendChild(food);
});
});
```
这段代码实现了以下功能:
1. 创建了一个包含三个食物项的`magnifier`节点和一个餐盘`xiaoming-plate`。
2. 每个食物项都可以被拖动,因为它们具有`draggable="true"`属性。
3. 当食物被拖动到餐盘上时,它会作为一个新的DOM元素被添加到餐盘中。
4. 允许同一份食物被拖动多次,因为每次拖动都会创建一个新的DOM元素。
5. 餐盘中可以存在多份相同的食物,因为每次拖放都会添加一个新的食物元素。
请注意,这个示例代码是一个基本的实现,你可能需要根据具体的需求进行进一步的样式和功能调整。
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客2025仙途报告 #
10679次浏览 220人参与
# 我们是不是被“优绩主义”绑架了? #
1192次浏览 53人参与
# 2025年终总结 #
190093次浏览 3199人参与
# 找工作,行业重要还是岗位重要? #
86852次浏览 1736人参与
# 你面试体验感最差/最好的公司 #
27285次浏览 455人参与
# 今年你最想重开的一场面试是? #
10261次浏览 119人参与
# 礼物开箱Plog #
2819次浏览 99人参与
# 为了秋招你都做了哪些准备? #
29463次浏览 524人参与
# 一人说一个提前实习的好处 #
19541次浏览 287人参与
# 秋招落幕,你是He or Be #
20803次浏览 362人参与
# 机械人晒出你的简历 #
147824次浏览 883人参与
# 重来一次,你会对开始求职的自己说 #
9319次浏览 234人参与
# 工作中听到最受打击的一句话 #
11521次浏览 169人参与
# 实习没事做是福还是祸? #
22213次浏览 328人参与
# 工作两年,想和老板谈涨薪怎么说 #
39058次浏览 176人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
13902次浏览 130人参与
# 25届暑期实习 #
1039129次浏览 20592人参与
# 实习的内耗时刻 #
212563次浏览 1579人参与
# 拿到offer之后,可以做些什么 #
81342次浏览 431人参与
# 这些公司卡简历很严格 #
82613次浏览 375人参与
