一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - js實現拖拽拼圖游戲

js實現拖拽拼圖游戲

2022-01-12 01:17一個學前端的小菜鳥 js教程

這篇文章主要為大家詳細介紹了js實現拖拽拼圖游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

js實現拖拽拼圖游戲

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

html:代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<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代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
* {
            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代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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"
            //開始拖拽的時候觸發事件
            v.addEventListener("dragstart", function (e) {
                // console.log('666');
                e.dataTransfer.setData("newdivID",e.target.getAttribute("id"))
                e.dataTransfer.setData("newdiv",e.target.style.backgroundPosition)
            })
            
             // 拖拽松開的時候觸發事件
            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()
            })
})

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/m0_54089303/article/details/120372327

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美日韩亚洲综合在线一区二区 | 成熟女人50岁一级毛片不卡 | 久久免费看少妇级毛片蜜臀 | 黑人巨| 变态np虐高h| 亚洲爆操| aigao视频| 国产一卡二卡3卡4卡四卡在线视频 | 92福利网| 国产九九在线 | 男男同志videos | 国产日韩精品一区二区三区 | 日本艳鉧动漫1~6完整版在 | 青草视频网站在线观看 | 欧美一级裸片 | 性色视频免费 | 国产成人精视频在线观看免费 | 亚洲精品乱码久久久久久蜜桃图片 | 免费观看美女被cao视频 | 日韩欧美亚洲每日更新网 | 亚洲精品私拍国产福利在线 | 国产成人精品日本亚洲网址 | 美女被草出水 | 欧美兽皇另类 | 四川女人偷人真实视频 | 国产成人福利免费观看 | 好猛好紧好硬使劲好大刺激视频 | 国产亚洲精品网站 | 国产欧美综合精品一区二区 | 天美传媒tm0087 | 99久久精品国内 | 日韩福利网站 | 国产综合亚洲专区在线 | 能播放18xxx18女同 | 亚洲久草视频 | 免费抽搐一进一出印度 | 国产精品模特hd在线 | 久久精品99国产精品日本 | 日韩精品视频在线播放 | 亚洲尿尿| 娇喘高潮教室h |