以下是一个简单的 JavaScript 原生拖放拼图游戏的源码示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>拖放拼图游戏</title>
<style>
#puzzle {
display: grid;
grid-template-columns: repeat(3, 100px);
grid-gap: 5px;
}
.piece {
width: 100px;
height: 100px;
background-color: #ccc;
border: 1px solid #000;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<div id="puzzle">
<div class="piece" draggable="true">1</div>
<div class="piece" draggable="true">2</div>
<div class="piece" draggable="true">3</div>
<div class="piece" draggable="true">4</div>
<div class="piece" draggable="true">5</div>
<div class="piece" draggable="true">6</div>
<div class="piece" draggable="true">7</div>
<div class="piece" draggable="true">8</div>
<div class="piece" draggable="true">9</div>
</div>
<script>
const puzzle = document.getElementById('puzzle');
const pieces = puzzle.querySelectorAll('.piece');
let draggedPiece = null;
pieces.forEach(piece => {
piece.addEventListener('dragstart', e => {
draggedPiece = piece;
e.dataTransfer.effectAllowed = 'move';
});
piece.addEventListener('dragover', e => {
e.preventDefault();
e.dataTransfer.dropEffect = 'move';
});
piece.addEventListener('drop', e => {
e.preventDefault();
if (e.target.classList.contains('piece') && e.target !== draggedPiece) {
const temp = e.target.textContent;
e.target.textContent = draggedPiece.textContent;
draggedPiece.textContent = temp;
}
});
});
</script>
</body>
</html>
基础概念:
优势:
类型:
应用场景:
常见问题及解决方法:
draggable="true"
属性,并且添加了正确的拖动事件监听器。dragover
事件中使用 e.preventDefault()
来允许放置。drop
事件中准确判断目标元素并进行内容交换。希望这个示例能帮助您理解 JavaScript 原生拖放拼图游戏的基本实现。
没有搜到相关的文章