首先,需要先定义一个div用于存放整个拼图:
<div id="puzzle"></div>
然后,定义每一块拼图的样式(如大小、位置、图片等):
<style> .piece { width: 100px; height: 100px; float: left; background-image: url(image.jpg); background-position: -x -y; } </style>
接着,在div中添加所有拼图块:
<div id="puzzle"> <div class="piece" id="1"></div> <div class="piece" id="2"></div> <div class="piece" id="3"></div> <div class="piece" id="4"></div> <div class="piece" id="5"></div> <div class="piece" id="6"></div> <div class="piece" id="7"></div> <div class="piece" id="8"></div> <div class="piece" id="9"></div> </div>
最后,在Javascript代码中实现拼图的交互效果(如点击交换位置等):
<script> var pieces = document.querySelectorAll('.piece'); function shuffle() { // 将拼图块随机排序 for (var i = 0; i < pieces.length; i++) { var x = Math.floor(Math.random() * 3) * -100; var y = Math.floor(Math.random() * 3) * -100; pieces[i].style.backgroundPosition = x + 'px ' + y + 'px'; } } function move(piece) { // 移动拼图块 var ids = [+piece.id - 1]; var empty = document.querySelectorAll('.piece.empty')[0].id; ids.push(+empty - 1); ids.sort(); var x1 = pieces[ids[0]].style.backgroundPositionX; var y1 = pieces[ids[0]].style.backgroundPositionY; var x2 = pieces[ids[1]].style.backgroundPositionX; var y2 = pieces[ids[1]].style.backgroundPositionY; pieces[ids[0]].style.backgroundPosition = x2 + ' ' + y2; pieces[ids[1]].style.backgroundPosition = x1 + ' ' + y1; pieces[empty - 1].classList.remove('empty'); piece.classList.add('empty'); } shuffle(); for (var i = 0; i < pieces.length; i++) { pieces[i].addEventListener('click',function() { if (this.classList.contains('empty')) return; move(this); }); } </script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。