js實現(xiàn)拖拽拼圖游戲
更新時間:2021年09月23日 08:35:14 作者:一個學前端的小菜鳥
這篇文章主要為大家詳細介紹了js實現(xiàn)拖拽拼圖游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js實現(xiàn)拖拽拼圖游戲的具體代碼,供大家參考,具體內(nèi)容如下
該游戲主要使用了一些拖拽事件,以及對數(shù)據(jù)傳遞的應用,直接上代碼,感興趣的可以參考
html:代碼
<div class="box"> <div id="d1" class="d1"></div> <div id="d2" class="d1"></div> <div id="d3" class="d1"></div> <div id="d4" class="d1"></div> <div id="d5" class="d1"></div> <div id="d6" class="d1"></div> <div id="d7" class="d1"></div> <div id="d8" class="d1"></div> <div id="d9" class="d1"></div> </div> <div id="but"> <button id="but1">一鍵完成</button> <button id="but2">開始游戲</button> <button id="but3">看一眼原圖</button> <div> <img id="yan" src="../../圖片/2222.jpg" alt=""> </div> </div>
css代碼:
* { margin: 0; padding: 0; } .box { width: 312px; height: 312px; border: 3px solid #000; margin: 50px auto 5px; font-size: 0; } .box div { width: 100px; height: 100px; display: inline-block; border: 2px solid #000; } .d1 { background-image: url(../../圖片/2222.jpg); background-size: 300px 300px; background-position: 0px 0px; } #but { border: 1px solid #000 transparent; width: 300px; height: 30px; margin: 0 auto; } #but img { width: 100px; height: 100px; float: right; display: none; } button { margin: 1px auto; border: 1px solid #000; }
js代碼:
var data = [['0 0'], ['-100px 0'], ['-200px 0'], ['0 -100px'], ['-100px -100px'], ['-200px -100px'], ['0 -200px'], ['-100px -200px'], ['-200px -200px']] var but1 = document.getElementById("but1") var but2 = document.getElementById("but2") var but3 = document.getElementById("but3") var yan = document.getElementById("yan") var divs = document.querySelectorAll(".d1") // 剛打開保持完整 for (var i = 0; i < divs.length; i++) { divs[i].style.backgroundPosition = data[i][0] } // 一鍵完成 but1.addEventListener("click", function () { for (var i = 0; i < divs.length; i++) { divs[i].style.backgroundPosition = data[i][0] } }) // 開始游戲 but2.addEventListener("click", function () { var arr = []; var maxTimes = 9 do { var num = Math.floor(Math.random() * 9); if (-1 == arr.indexOf(num)) { arr.push(num); maxTimes--; } } while (maxTimes); for (var i = 0; i < divs.length; i++) { const k = arr[i] divs[k].style.backgroundPosition = data[i][0] } }) // 看一眼原圖 but3.addEventListener("mousedown", function () { yan.style.display = "block" }) but3.addEventListener("mouseup", function () { yan.style.display = "none" }) divs.forEach(function (v, i) { v.draggable = "true" //開始拖拽的時候觸發(fā)事件 v.addEventListener("dragstart", function (e) { // console.log('666'); e.dataTransfer.setData("newdivID",e.target.getAttribute("id")) e.dataTransfer.setData("newdiv",e.target.style.backgroundPosition) }) // 拖拽松開的時候觸發(fā)事件 v.addEventListener("drop",function (e) { e.stopPropagation() e.preventDefault() var oldDiv = document.querySelector("#"+e.dataTransfer.getData('newdivID'))//取出并保存開始拖拽的div的id屬性的div var pos=e.dataTransfer.getData("newdiv") // 取出并保存開始拖拽的div的backgroundPosition屬性 oldDiv.style.backgroundPosition=e.target.style.backgroundPosition//把準備松開到的div的backgroundPosition屬性值傳遞給取出的那個舊div e.target.style.backgroundPosition=pos// 把取出的那個舊div的backgroundPosition屬性值傳遞給當前準備松開到的div }) v.addEventListener("dragover",function(e){ e.preventDefault() }) })
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于SpringBoot單元測試(cobertura生成覆蓋率報告)
這篇文章主要介紹了關(guān)于SpringBoot單元測試(cobertura生成覆蓋率報告),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Java爬蟲實戰(zhàn)抓取一個網(wǎng)站上的全部鏈接
這篇文章主要介紹了JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁內(nèi)容的方法,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。2016-10-10spring boot task實現(xiàn)動態(tài)創(chuàng)建定時任務的方法
這篇文章主要介紹了spring boot task實現(xiàn)動態(tài)創(chuàng)建定時任務,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01解決redisTemplate中l(wèi)eftPushAll隱性bug的問題
這篇文章主要介紹了解決redisTemplate中l(wèi)eftPushAll隱性bug的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Java中List、Set、Map的區(qū)別和實現(xiàn)方式示例代碼
這篇文章主要介紹了Java中List、Set、Map的區(qū)別和實現(xiàn)方式示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06