有没有办法让许多子div保持在父div大小之内而不溢出?

问题描述 投票:0回答:1

我正在做 odin 项目的 Etch-a-sketch 项目,到目前为止我已经能够制作网格并应用悬停效果。 我一直在尝试让子 div 正确适合父 div 。我正在考虑一种方法来调整子 div 的大小,但无法弄清楚。我还认为将父 div(容器)和子 div 大小设置为固定数字会给我带来问题。

如有任何帮助,我们将不胜感激!

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="script.js" defer></script>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Etch-A-Sketch</title>
</head>
<body>
    <div id="container"></div>
</body>
</html>
let container = document.getElementById('container');
let squaresPerSide = prompt('Choose a number up to 100 to make a grid with that many squares on each side.');
function newGrid () {

let totalSquares = squaresPerSide * squaresPerSide
for (i = 0; i < totalSquares; i++) {
    let myDivs = container.appendChild(document.createElement('div'));
    myDivs.setAttribute('style', 'background-color: black; width: 10px; height: 10px; margin: 1px');
    myDivs.addEventListener("mouseover", function() {
        myDivs.style.backgroundColor = "red"
    })
}
}
container.setAttribute('style', 'display: flex; width: 370px; flex-wrap: wrap; justify-content: center; align-items: center');
document.body.setAttribute('style', 'display: flex; justify-content: center; align-items: center; height: 100vh; margin: auto');

newGrid()
javascript html css dom dom-events
1个回答
0
投票

创建所需网格的一个简单解决方案可以是向 DOM 添加 row

div
,并在移动到下一个
row
squaresPerSide 之前向该 div 添加
div
数量的方块。也会有
squaresPerSide
行(创建
squaresPerSide
*
squaresPerSide
框)。

这是更好地解释这一点的代码:

for (i = 0; i < squaresPerSide; i++) {
  const row = container.appendChild(document.createElement('div'));
  for (j = 0; j < squaresPerSide; j++) {
    let square = container.appendChild(document.createElement('div'));
    square.setAttribute('style', 'background-color: black; width: 10px; height: 10px; margin: 1px');
    square.addEventListener("mouseover", function() {
      square.style.backgroundColor = "red"
    })
    row.appendChild(square);
  }
}

这里有一个可以玩的小提琴:https://jsfiddle.net/s8zL9fq5/

© www.soinside.com 2019 - 2024. All rights reserved.