【发布时间】:2022-01-23 06:23:00
【问题描述】:
这里是初学者。
从那时起,我就尝试构建一个包含 32 个盒子、16 列和 16 行的 etch-a-sketch 板。我最终得到的唯一结果是一行或一列中有 32 个框。我不知道错误在哪里,在脚本、css 或 html 中,所以我将这三个都包含在帖子中。
感谢任何帮助!
代码如下:
document.addEventListener('DOMContentLoaded', () => {
const grid = document.querySelector('.grid');
//const message = document.querySelector('#message');
//MAKE THE BOARD
function makeBoard() {
for (let i = 0; i <= 16; i++ ) {
const squareCol = document.createElement('div');
squareCol.className = 'squareCol';
squareCol.setAttribute('data-id',i)
grid.appendChild(squareCol);
}for(let j = 0; j <= 16; j++){
const squareRow = document.createElement('div');
squareRow.className = 'squareRow';
squareRow.setAttribute('data-id',j)
grid.appendChild(squareRow);
}
}
makeBoard();
})
body {
margin: 0;
padding: 0;
}
.container {
display: flex;
justify-content: center;
align-items: center;
height: 618px;
width: 618px;
}
.grid {
display: flex;
justify-content: center;
align-items: center;
}
.squareRow, .squareCol {
display: flex;
justify-content: center;
align-items: center;
height: 10px;
width: 10px;
border: solid black 1px;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Etch-a-Sketch</title>
<script src="script.js" defer></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<span class="grid"></span>
</div>
<div id="message"></div>
</body>
</html>
【问题讨论】:
-
16x16 不是 32。:)
-
你需要在你的 CSS 中指定一个换行策略。这回答了你的问题了吗? Flexbox: 4 items per row
-
为什么要将单元格作为行和单元格作为列附加到网格中。列不应该在行中吗?使用 squareCol 将 16 个 div 添加到网格中,然后使用 squareRow 类添加 16 个 div。应该是
for (i) { make row for (j) { make cols, append to row } } -
@isherwood,你是对的,谢谢,我需要更好地了解 flexbox,必须查看链接并再次查看基础知识。
-
@epascarello 这更符合逻辑,谢谢。
标签: javascript css flexbox