【发布时间】:2020-10-03 20:28:21
【问题描述】:
【问题讨论】:
-
你能提供一些代码吗?到目前为止,您尝试了什么。
-
我还没有编码,因为我不知道如何继续编码。
标签: javascript html css user-interface css-grid
【问题讨论】:
标签: javascript html css user-interface css-grid
这将是最通用的解决方案。根据子元素的总和,使用 CSS grid whit 可数列和行。
JS解释:
grid.children.length - 计算 grid div 的子级。 Math.sqrt(grid.children.length) - 返回子长度的平方根。 Math.ceil(Math.sqrt(grid.children.length)) - 将数字向上舍入到下一个最大整数。所以我们得到我们的列和行数。 --cols - 将 CSS 变量设置为我们的 grid elemetn。此 JavaScript 适用于任意数量的 grid 块。
for (const grid of document.querySelectorAll('.grid')) {
grid.style.setProperty('--cols', Math.ceil(Math.sqrt(grid.children.length)));
}
.grid {
--cols: 1;
width: 100px;
height: 100px;
display: inline-grid;
grid-template-columns: repeat(var(--cols), 1fr);
grid-template-rows: repeat(var(--cols), 1fr);
column-gap: 2px;
row-gap: 2px;
background: #eee;
vertical-align: top;
margin: 0 10px 10px 0;
}
.grid>div {
background: #333;
}
<div class="grid">
<div></div>
</div>
<div class="grid">
<div></div>
<div></div>
<div></div>
</div>
<div class="grid">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
<div class="grid">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
【讨论】: