Я пишу слайд-игру с использованием JavaScript, HTML и CSS. Я сделал 3 * 3, который работал нормально, но для моих 4 * 4 фрагменты изображения вообще не отображаются. Это часть кода HTML, касающаяся головоломки, пример того, как я сделал с CSS, и мой JS. Моя картинка уже разбита на части, а CSS в основном для прикрепления каждой к соответствующей части. Я знаю, что мой HTML читает JS, потому что я реализовал функцию, просто чтобы посмотреть, будет ли она читать, и она это сделала. Это не показывает картину головоломки, количество шагов и т.д. c.
HTML
<div class="text-center" style="padding-top:50px">
<h2 id="stepCounter"></h2>
<div id="table" class="text-center" style="display: table">
<div id="row1" style="display: table-row;">
<div id="book11" class="book1" style="display: table-cell;" onclick="selectBook(1,1)"></div>
<div id="book12" class="book2" style="display: table-cell;" onclick="selectBook(1,2)"></div>
<div id="book13" class="book3" style="display: table-cell;" onclick="selectBook(1,3)"></div>
<div id="book14" class="book4" style="display: table-cell;" onclick="selectBook(1,4)"></div>
</div>
<div id="row2" style="display: table-row;">
<div id="book21" class="book5" style="display: table-cell;" onclick="selectBook(2,1)"></div>
<div id="book22" class="book6" style="display: table-cell;" onclick="selectBook(2,2)"></div>
<div id="book23" class="book7" style="display: table-cell;" onclick="selectBook(2,3)"></div>
<div id="book24" class="book8" style="display: table-cell;" onclick="selectBook(2,4)"></div>
</div>
<div id="row3" style="display: table-row;">
<div id="book31" class="book9" style="display: table-cell;" onclick="selectBook(3,1)"></div>
<div id="book32" class="book10" style="display: table-cell;" onclick="selectBook(3,2)"></div>
<div id="book33" class="book11" style="display: table-cell;" onclick="selectBook(3,3)"></div>
<div id="book34" class="book12" style="display: table-cell;" onclick="selectBook(3,4)"></div>
</div>
<div id="row4" style="display: table-row;">
<div id="book41" class="book13" style="display: table-cell;" onclick="selectBook(4,1)"></div>
<div id="book42" class="book14" style="display: table-cell;" onclick="selectBook(4,2)"></div>
<div id="book43" class="book15" style="display: table-cell;" onclick="selectBook(4,3)"></div>
<div id="book44" class="book16" style="display: table-cell;" onclick="selectBook(4,4)"></div>
</div>
</div>
</div>
CSS
.book1 {
display: table-cell;
width: 90px;
height: 90px;
background: #F5EDDA;
}
.book2 {
display: table-cell;
width: 90px;
height: 90px;
background: url(Pictures/book2/book22.jpg);
background-size: contain;
}
.book3 {
display: table-cell;
width: 90px;
height: 90px;
background: url(Pictures/book2/book23.jpg);
background-size: contain;
}
.book4 {
display: table-cell;
width: 90px;
height: 90px;
background: url(Pictures/book2/book24.jpg);
background-size: contain;
}
.book5 {
display: table-cell;
width: 90px;
height: 90px;
background: url(Pictures/book2/book25.jpg);
background-size: contain;
}
.book6 {
display: table-cell;
width: 90px;
height: 90px;
background: url(Pictures/book2/book26.jpg);
background-size: contain;
}
JS
var stepCount = 0;
function shuffle() {
for (var row = 1; row <= 4; row++) {
for (var col = 1; col <= 4; col++) {
var row2 = Math.floor(Math.random() * 4 + 1);
var col2 = Math.floor(Math.random() * 4 + 1);
swapBook("book" + row + col, "book" + row2 + col2);
}
}
stepCount = 0;
document.getElementById('stepCounter').innerHTML = "<h2>Steps: </h2>" + stepCount;
}
function selectBook(row, col) {
var book = document.getElementById("book" + row + col);
var blankBook = book.className;
if (blankBook != "book1") {
//Checking if white tile on the right
if (col < 4) {
if (document.getElementById("book" + row + (col + 1)).className == "book1") {
swapBook("book" + row + col, "book" + row + (col + 1));
stepCount++;
document.getElementById('stepCounter').innerHTML = "<h2>Steps: </h2>" + stepCount;
return;
}
}
//Checking if white tile on the left
if (col > 1) {
if (document.getElementById("book" + row + (col - 1)).className == "book1") {
swapBook("book" + row + col, "book" + row + (col - 1));
stepCount++;
document.getElementById('stepCounter').innerHTML = "<h2>Steps: </h2>" + stepCount;
return;
}
}
//Checking if white tile is above
if (row > 1) {
if (document.getElementById("book" + (row - 1) + col).className == "book1") {
swapBook("book" + row + col, "book" + (row - 1) + col);
stepCount++;
document.getElementById('stepCounter').innerHTML = "<h2>Steps: </h2>" + stepCount;
return;
}
}
//Checking if white tile is below
if (row < 4) {
if (document.getElementById("book" + (row + 1) + col).className == "book1") {
swapBook("book" + row + col, "book" + (row + 1) + col);
stepCount++;
document.getElementById('stepCounter').innerHTML = "<h2>Steps: </h2>" + stepCount;
return;
}
}
}
}
function swapBook(book1, book2) {
var temp = document.getElementById(book1).className;
document.getElementById(book1).className = document.getElementById(book2).className;
document.getElementById(book2).className = temp;
}
Это пример моего 3 * 3 HTML, который работает:
<div class="text-center" style="padding-top:50px">
<h2 id="stepCounter"></h2>
<center>
<div id="table" class="text-center" style="display: table">
<div id="row1" style="display: table-row;">
<div id="piece11" class="piece1" style="display: table-cell;" onclick="selectPiece(1,1)"></div>
<div id="piece12" class="piece2" style="display: table-cell;" onclick="selectPiece(1,2)"></div>
<div id="piece13" class="piece3" style="display: table-cell;" onclick="selectPiece(1,3)"></div>
</div>
<div id="row2" style="display: table-row;">
<div id="piece21" class="piece4" style="display: table-cell;" onclick="selectPiece(2,1)"></div>
<div id="piece22" class="piece5" style="display: table-cell;" onclick="selectPiece(2,2)"></div>
<div id="piece23" class="piece6" style="display: table-cell;" onclick="selectPiece(2,3)"></div>
</div>
<div id="row3" style="display: table-row;">
<div id="piece31" class="piece7" style="display: table-cell;" onclick="selectPiece(3,1)"></div>
<div id="piece32" class="piece8" style="display: table-cell;" onclick="selectPiece(3,2)"></div>
<div id="piece33" class="piece9" style="display: table-cell;" onclick="selectPiece(3,3)"></div>
</div>
</div>
</center>
</div>
3 * 3 Работает CSS
.piece1 {
display: table-cell;
width: 120px;
height: 120px;
background: #F5EDDA;
}
.piece2 {
display: table-cell;
width: 120px;
height: 120px;
background: url(Pictures/flower/flower2.jpg);
background-size: contain;
}
.piece3 {
display: table-cell;
width: 120px;
height: 120px;
background: url(Pictures/flower/flower3.jpg);
background-size:contain;
}
.piece4 {
display: table-cell;
width: 120px;
height: 120px;
background: url(Pictures/flower/flower4.jpg);
background-size: contain;
}