要实现这个功能,我们可以使用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. 餐盘中可以存在多份相同的食物,因为每次拖放都会添加一个新的食物元素。 请注意,这个示例代码是一个基本的实现,你可能需要根据具体的需求进行进一步的样式和功能调整。
点赞 评论

相关推荐

牛客网
牛客企业服务