最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)拖拽拼圖游戲

 更新時間:2021年09月23日 08:35:14   作者:一個學(xué)前端的小菜鳥  
這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)拖拽拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了js實現(xiàn)拖拽拼圖游戲的具體代碼,供大家參考,具體內(nèi)容如下

該游戲主要使用了一些拖拽事件,以及對數(shù)據(jù)傳遞的應(yīng)用,直接上代碼,感興趣的可以參考

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//把準(zhǔn)備松開到的div的backgroundPosition屬性值傳遞給取出的那個舊div
                e.target.style.backgroundPosition=pos// 把取出的那個舊div的backgroundPosition屬性值傳遞給當(dāng)前準(zhǔn)備松開到的div
            })
            v.addEventListener("dragover",function(e){
                e.preventDefault()
            })
})

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 多模塊項目引入SpringSecurity后一直報404的解決方案

    多模塊項目引入SpringSecurity后一直報404的解決方案

    這篇文章主要介紹了多模塊項目引入SpringSecurity后一直報404的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java concurrency之互斥鎖_動力節(jié)點Java學(xué)院整理

    Java concurrency之互斥鎖_動力節(jié)點Java學(xué)院整理

    本文通過示例代碼給大家介紹了Java concurrency之互斥鎖的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-06-06
  • springboot集成Mybatis的詳細(xì)教程

    springboot集成Mybatis的詳細(xì)教程

    今天給大家?guī)淼倪€是關(guān)于springboot的相關(guān)知識,文章圍繞著springboot集成Mybatis的詳細(xì)教程展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • maven中profile的使用

    maven中profile的使用

    本文主要介紹了maven中profile的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Spring實戰(zhàn)之Bean的后處理器操作示例

    Spring實戰(zhàn)之Bean的后處理器操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之Bean的后處理器操作,結(jié)合實例形式詳細(xì)分析了Bean的后處理器相關(guān)配置、操作方法及使用注意事項,需要的朋友可以參考下
    2019-12-12
  • java 將字符串追加到文件已有內(nèi)容后面的操作

    java 將字符串追加到文件已有內(nèi)容后面的操作

    這篇文章主要介紹了java 將字符串追加到文件已有內(nèi)容后面的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java實現(xiàn)導(dǎo)出合并Excel單元格

    Java實現(xiàn)導(dǎo)出合并Excel單元格

    隨著數(shù)據(jù)的不斷增長,很多時候需要將數(shù)據(jù)導(dǎo)出到Excel中進(jìn)行分析、處理和展示。本文將介紹如何使用Java實現(xiàn)Excel導(dǎo)出,并且可以合并單元格,需要的可以參考一下
    2023-04-04
  • 一篇文章帶你入門java方法

    一篇文章帶你入門java方法

    這篇文章主要介紹了java基礎(chǔ)之方法詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-08-08
  • 詳解Spring注解@Autowired的實現(xiàn)原理和使用方法

    詳解Spring注解@Autowired的實現(xiàn)原理和使用方法

    在使用Spring開發(fā)的時候,配置的方式主要有兩種,一種是xml的方式,另外一種是 java config的方式,在使用的過程中,我們使用最多的注解應(yīng)該就是@Autowired注解了,所以本文就給大家講講@Autowired注解是如何使用和實現(xiàn)的,需要的朋友可以參考下
    2023-07-07
  • springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決

    springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決

    這篇文章主要介紹了springcloud本地調(diào)試feign調(diào)用出現(xiàn)的詭異404問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論

伊吾县| 马关县| 贡山| 万全县| 阿巴嘎旗| 绥江县| 保定市| 铜鼓县| 杭州市| 涡阳县| 社旗县| 柳河县| 常州市| 泰顺县| 谷城县| 科尔| 闻喜县| 深水埗区| 宁都县| 诸城市| 连城县| 平潭县| 土默特左旗| 无锡市| 临漳县| 吉林省| 平泉县| 武川县| 华阴市| 承德县| 临夏县| 安国市| 临潭县| 修水县| 册亨县| 临城县| 柘城县| 宜都市| 朝阳市| 富阳市| 通河县|