html5拖拽制作点菜单
时间: 2023-10-21 09:04:47 浏览: 34
好的,我来介绍一下如何用 HTML5 的拖拽功能制作一个简易的点菜单。
首先,我们需要定义两个区域:菜单区和点菜区。菜单区包含所有可选菜品,点菜区则显示已经点了哪些菜品。我们可以使用 div 元素来分别表示这两个区域。
```html
<div id="menu">
<h2>菜单</h2>
<ul>
<li draggable="true">宫保鸡丁</li>
<li draggable="true">鱼香肉丝</li>
<li draggable="true">红烧肉</li>
</ul>
</div>
<div id="orders">
<h2>点菜区</h2>
<ul></ul>
</div>
```
其中,菜单区的菜品列表使用了 ul 和 li 元素来表示,每个 li 元素都设置了 draggable 属性,表示可以被拖拽。点菜区的菜品列表初始为空,也使用了 ul 和 li 元素来表示。
接下来,我们需要为菜单区的 li 元素绑定拖拽事件。当用户拖动一个菜品时,我们需要获取这个菜品的名称并添加到点菜区的菜品列表中。
```javascript
const menu = document.getElementById("menu");
const orders = document.getElementById("orders");
menu.addEventListener("dragstart", function(event) {
const menuItem = event.target.textContent;
event.dataTransfer.setData("text/plain", menuItem);
});
orders.addEventListener("dragover", function(event) {
event.preventDefault();
});
orders.addEventListener("drop", function(event) {
const menuItem = event.dataTransfer.getData("text/plain");
const li = document.createElement("li");
li.textContent = menuItem;
orders.querySelector("ul").appendChild(li);
});
```
这段 JavaScript 代码分别为菜单区和点菜区绑定了 dragstart、dragover 和 drop 三个事件。当用户开始拖动一个菜品时,我们获取这个菜品的名称,并使用 event.dataTransfer.setData() 方法将数据存储在拖拽事件中。当用户拖拽到点菜区时,我们需要阻止默认的拖拽行为并在 drop 事件中获取菜品的名称并添加到点菜区的菜品列表中。
最终的效果应该是这样的:
![拖拽点菜](https://cdn.jsdelivr.net/gh/Yikun/hexo_blog/picgo/20211020104052.png)
当然,以上代码只是一个简易的示例,实际的点菜系统还需要更多的功能和细节处理。