利用 HTML5 拖放 API 知识,创建一个简单网页。网页中有几个不同颜色的方块元素作为可拖放元素,还有几个对应的空白区域作为放置目标。把方块拖放到空白区域,当方块进入目标区域时,方块颜色变亮,拖出目标区域则恢复原色,以此体验拖放交互过程。
时间: 2024-12-30 07:40:07 浏览: 11
要创建一个简单的HTML5拖放交互页面,你可以按照以下步骤操作:
1. **设置HTML结构**:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
.draggable { width: 50px; height: 50px; border: 2px solid black; }
.droppable { padding: 10px; background-color: lightgray; border: 2px dashed black; }
.active { box-shadow: 0 0 5px rgba(0, 0, 0, 0.3); }
</style>
</head>
<body>
<!-- 可拖放方块 -->
<div class="draggable draggable1" id="drag1" style="background-color:red;"></div>
<div class="draggable draggable2" id="drag2" style="background-color:green;"></div>
<!-- 放置区域 -->
<div class="droppable droppable1" id="drop1"></div>
<div class="droppable droppable2" id="drop2"></div>
<script src="dragdrop.js"></script>
</body>
</html>
```
2. **编写JavaScript (dragdrop.js)**:
```javascript
// 获取拖放元素
const dragElements = document.querySelectorAll('.draggable');
const dropAreas = document.querySelectorAll('.droppable');
// 钩子函数处理拖放事件
function handleDragStart(e) {
e.dataTransfer.setData('text/plain', e.target.id);
}
function handleDrop(e) {
e.preventDefault(); // 阻止默认行为(防止页面滚动)
const sourceId = e.dataTransfer.getData('text/plain');
const sourceElement = document.getElementById(sourceId);
const dropArea = e.target;
if (sourceElement && dropArea.classList.contains('droppable')) {
sourceElement.classList.remove('active'); // 移除激活状态
dropArea.classList.add('active'); // 添加激活状态
}
}
// 给拖放元素添加事件监听器
for (let i = 0; i < dragElements.length; i++) {
dragElements[i].addEventListener('dragstart', handleDragStart);
}
// 给放置区域添加接收事件监听器
for (let i = 0; i < dropAreas.length; i++) {
dropAreas[i].addEventListener('drop', handleDrop);
dropAreas[i].addEventListener('dragover', function(e) {
e.preventDefault();
e.target.classList.add('hovering'); // 添加悬停状态
});
dropAreas[i].addEventListener('dragleave', function() {
this.classList.remove('hovering'); // 移除悬停状态
});
}
```
现在你已经有了一个简单的网页,其中红色和绿色的方块可以被拖动到对应的颜色区域。当你拖动方块进入目标区域时,方块会变亮;一旦离开目标区域,它会恢复原始颜色。
阅读全文