


Javascript digabungkan dengan Flexbox untuk hanya melaksanakan kemahiran permainan_javascript teka-teki gelongsor
Teka-teki gelongsor bermaksud membahagikan gambar kepada bahagian yang sama, merombak susunan (gambar di bawah), dan kemudian menggelongsorkannya bersama-sama untuk membentuk gambar yang lengkap.
Untuk melaksanakan teka-teki jigsaw, anda perlu mempertimbangkan cara mengocok pesanan secara rawak, cara menukar kedudukan dua gambar, dsb. Walau bagaimanapun, selepas menggunakan reka letak Flexbox, anda tidak perlu memikirkan perkara ini. Pelayar akan melakukannya untuk anda. Untuk pengenalan kepada Flexbox, klik di sini.
Apa yang digunakan dalam permainan ini ialah atribut susunan susun atur Flexbox Atribut pesanan boleh digunakan untuk mengawal susunan item Flex.
Di sini saya menggunakan sembilan elemen kanvas untuk membahagikan imej kepada sembilan bahagian yang sama. Anda juga boleh menggunakan kaedah lain, seperti kedudukan imej latar belakang:
<div class="wrap"> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> <canvas></canvas> </div>
Jika ia tidak terhad kepada grid sembilan persegi, tetapi juga grid enam belas persegi, dsb., elemen di atas boleh dijana secara dinamik.
Berikut ialah kod untuk menjana sembilan gambar dalam susunan kocok:
var drawImage = function (url) { return new Promise(function (resolve, reject) { var img = new Image(); img.onload = function () { resolve(img); }; img.src = url; }) }; drawImage("2.jpg").then(function (img) { var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; var random = arr.sort(function() {return Math.random() > 0.5}); [].forEach.call(document.querySelectorAll("canvas"), function (item, i) { item.width = $(".wrap").clientWidth / 3; item.height = $(".wrap").clientHeight / 3; item.style.order = random[i]; var ctx = item.getContext("2d"); ctx.drawImage(img, img.width * (i % 3) / 3, img.height * Math.floor(i / 3) / 3, img.width / 3, img.height / 3, 0, 0, item.width, item.height); }); });
Kod kunci di atas ialah:
item.style.order = random[i];
Dengan merombak susunan nombor dan memberikannya secara rawak kepada atribut susunan setiap elemen kanvas, penyemak imbas akan mengisih nombor tersebut secara automatik untuk anda.
Saya tidak akan membincangkan butiran lain tentang kod ini. Begini cara menukar kedudukan dua gambar. Ini sangat mudah:
var order1 = item.style.order; var order2 = target.style.order;
Anda hanya perlu menukar nilai atribut pesanan kedua-dua pihak.
Kod penuh
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" /> <meta content="yes" name="apple-mobile-web-app-capable" /> <meta content="black" name="apple-mobile-web-app-status-bar-style" /> <meta content="telephone=no" name="format-detection" /> <title></title> <style> html, body { height: 100%; } body { margin: 0; padding: 0; overflow: hidden; } .wrap { display: flex; flex-wrap: wrap; width: 100%; height: 100%; overflow: hidden; } .wrap canvas { width: 33.3333%; height: 33.3333%; border: 1px solid red; box-sizing: border-box; } </style> </head> <body> <div class="wrap"> <canvas data-value="1"></canvas> <canvas data-value="2"></canvas> <canvas data-value="3"></canvas> <canvas data-value="4"></canvas> <canvas data-value="5"></canvas> <canvas data-value="6"></canvas> <canvas data-value="7"></canvas> <canvas data-value="8"></canvas> <canvas data-value="9"></canvas> </div> <script> var $ = function (el) { return document.querySelector(el); }; var touchMove, touchEnd; var drawImage = function (url) { return new Promise(function (resolve, reject) { var img = new Image(); img.onload = function () { resolve(img); }; img.src = url; }) }; drawImage("2.jpg").then(function (img) { var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; var random = arr.sort(function() {return Math.random() > 0.5}); [].forEach.call(document.querySelectorAll("canvas"), function (item, i) { item.width = $(".wrap").clientWidth / 3; item.height = $(".wrap").clientHeight / 3; item.style.order = random[i]; var ctx = item.getContext("2d"); ctx.drawImage(img, img.width * (i % 3) / 3, img.height * Math.floor(i / 3) / 3, img.width / 3, img.height / 3, 0, 0, item.width, item.height); }); }); document.addEventListener("touchstart", function (e) { var target = e.target; if (e.target.tagName.toLowerCase() !== "canvas") { return; } var ctx = target.getContext("2d"); var image = ctx.getImageData(0, 0, target.width, target.height); var obj = target.cloneNode(true); obj.getContext("2d").putImageData(image, 0, 0); var top = target.getBoundingClientRect().top, left = target.getBoundingClientRect().left; obj.style.cssText = "position: absolute; top: " + top + "px; left: " + left + "px"; document.body.appendChild(obj); var point = {"x": e.touches[0].pageX, "y": e.touches[0].pageY}; document.addEventListener("touchmove", touchMove = function (e) { obj.style.cssText = "position: absolute; top:" + (e.touches[0].pageY - point.y + top) + "px; left: " + (e.touches[0].pageX - point.x + left) + "px"; }); document.addEventListener("touchend", touchEnd = function (e) { var pos = {"x": e.changedTouches[0].pageX, "y": e.changedTouches[0].pageY}; [].forEach.call(document.querySelectorAll(".wrap canvas"), function (item, i) { var offset = item.getBoundingClientRect(); if (pos.x > offset.left && pos.x < (offset.left + item.width) && pos.y > offset.top && pos.y < (offset.top + item.height)) { var order1 = item.style.order; var order2 = target.style.order; if (obj.parentNode) { document.body.removeChild(obj); } item.style.order = order2; target.style.order = order1; } }); document.removeEventListener("touchmove", touchMove); document.removeEventListener("touchend", touchEnd); }) }) </script> </body> </html>
Apabila anda menguji, sebaiknya gunakan emulator Google atau telefon mudah alih untuk membukanya, kerana hanya acara sentuhan mudah alih yang disokong.
Hanya fungsi asas dilaksanakan dalam kod, dan fungsi lengkap tidak dilaksanakan.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk menggunakan atribut kedudukan secara fleksibel dalam H5 Dalam pembangunan H5, kedudukan dan susun atur elemen sering terlibat. Pada masa ini, sifat kedudukan CSS akan mula dimainkan. Atribut kedudukan boleh mengawal kedudukan elemen pada halaman, termasuk kedudukan relatif, kedudukan mutlak, kedudukan tetap dan kedudukan melekit. Artikel ini akan memperkenalkan secara terperinci cara menggunakan atribut kedudukan secara fleksibel dalam pembangunan H5.

Petua pengoptimuman atribut reka letak CSS: positionsticky dan flexbox Dalam pembangunan web, reka letak adalah aspek yang sangat penting. Struktur susun atur yang baik boleh meningkatkan pengalaman pengguna dan menjadikan halaman lebih cantik dan mudah dinavigasi. Ciri reka letak CSS adalah kunci untuk mencapai matlamat ini. Dalam artikel ini, saya akan memperkenalkan dua teknik pengoptimuman sifat reka letak CSS yang biasa digunakan: positionsticky dan flexbox, dan memberikan contoh kod khusus. 1. jawatan

Tutorial HTML: Cara menggunakan Flexbox untuk susun atur sama tinggi, sama lebar, sama jarak Contoh kod khusus Pengenalan: Dalam reka bentuk web moden, reka letak adalah faktor yang sangat kritikal. Untuk halaman yang perlu memaparkan sejumlah besar kandungan, cara mengatur kedudukan dan saiz elemen secara munasabah untuk mencapai keterlihatan yang baik dan kemudahan penggunaan adalah isu penting. Flexbox (Tempat Letak Kotak Fleksibel) ialah alat yang sangat berkuasa di mana pelbagai keperluan susun atur fleksibel boleh direalisasikan dengan mudah. Artikel ini akan memperkenalkan Flexbox secara terperinci

Tutorial HTML: Cara Menggunakan Flexbox untuk Susun Atur Ketinggian Menegak Dalam pembangunan web, reka letak sentiasa menjadi isu penting. Terutama apabila perlu untuk melaksanakan susun atur ketinggian sama menegak, kaedah susun atur CSS tradisional sering menghadapi beberapa kesukaran. Masalah ini boleh diselesaikan dengan mudah menggunakan susun atur Flexbox. Tutorial ini akan memperkenalkan secara terperinci cara menggunakan Flexbox untuk susun atur ketinggian sama menegak dan memberikan contoh kod khusus. Flexbox ialah ciri baharu dalam CSS3 yang boleh digunakan untuk mencipta reka letak yang fleksibel dan responsif.

Tutorial HTML: Cara menggunakan Flexbox untuk susun atur ketinggian sama suai, contoh kod khusus diperlukan Pengenalan: Dalam reka bentuk dan pembangunan web, melaksanakan susun atur ketinggian sama suai adalah keperluan biasa. Kaedah susun atur CSS tradisional sering menghadapi beberapa kesukaran apabila berurusan dengan susun atur ketinggian yang sama, dan susun atur Flexbox memberikan kami penyelesaian yang mudah dan berkuasa. Artikel ini akan memperkenalkan konsep asas dan penggunaan biasa susun atur Flexbox, dan memberikan contoh kod khusus untuk membantu pembaca menguasai penggunaan Flexbox dengan cepat untuk melaksanakan mereka sendiri

Tutorial HTML: Cara Menggunakan Flexbox untuk Reka Letak Teragih Sekata Pengenalan: Dalam reka bentuk web, elemen susun atur selalunya diperlukan. Kaedah susun atur tradisional mempunyai beberapa had, dan Flexbox (susun atur kotak fleksibel) ialah kaedah susun atur yang boleh memberikan lebih fleksibiliti dan kuasa. Artikel ini akan memperkenalkan cara menggunakan Flexbox untuk mencapai reka letak pengedaran yang sekata dan memberikan contoh kod khusus. 1. Pengenalan kepada Flexbox Flexbox ialah model susun atur kotak fleksibel yang diperkenalkan dalam CSS3, yang membolehkan elemen untuk

Tutorial HTML: Cara menggunakan Flexbox untuk susun atur boleh berskala, sama tinggi, sama lebar, sama jarak susun atur model kotak. Ia adalah singkatan kepada FlexibleBox, yang bermaksud susun atur yang fleksibel. Susun atur Flexbox secara automatik boleh melaraskan kedudukan dan saiz elemen mengikut saiz bekas untuk mencapai pelbagai susunan fleksibel. 2. Cara menggunakan susun atur Flexbox untuk mencipta

Bagaimana untuk menggunakan teknologi flexbox CSS3 untuk mencapai pengedaran kandungan web yang sekata? Dengan pembangunan reka bentuk web, orang ramai mempunyai keperluan yang lebih tinggi dan lebih tinggi untuk susun atur halaman web. Untuk mencapai pengedaran kandungan web yang sekata, teknologi flexbox CSS3 telah menjadi penyelesaian yang sangat berkesan. Artikel ini akan memperkenalkan cara menggunakan teknologi flexbox untuk mencapai pengedaran kandungan web yang sekata, dan memberikan beberapa contoh praktikal. 1. Apakah teknologi flexbox (susun atur elastik) ialah ciri baharu yang ditambah dalam CSS3.
