【发布时间】:2018-05-24 06:15:56
【问题描述】:
我想使用 flexbox 在容器中动态排列盒子。安排如下:
对于三个或四个盒子,盒子应该像第一张图片一样排列。 对于六个盒子,这些盒子应该适合两行三列。但是对于七个盒子,排列应该看起来像第二张图片中显示的那样,依此类推。
容器的宽度和高度是固定的。
这完全可以通过 Flexbox 实现吗?
HTML:
<div class="container">
<div class="box">AB</div>
<div class="box">CD</div>
<div class="box">EF</div>
<div class="box">GH</div>
<div class="box">IJ</div>
<div class="box">KL</div>
<div class="box">MN</div>
<div class="box">OP</div>
<div class="box">QR</div>
<div class="box">ST</div>
<div class="box">UV</div>
<div class="box">XY</div>
</div>
CSS:
.container {
width: 160px;
height: 160px;
border: 1px solid blue;
display: flex;
}
.box {
border: 1px solid red;
text-align: center;
}
JavaScript:
function align(nodes) {
var nodeLength = nodes.length;
if(nodeLength == 1) {
// nodes occupies entire box
}
else if (nodeLength == 2) {
// nodes displayed in two columns
}
else if(nodeLength > 2 && nodeLength < 5) {
// nodes displayed in two rows, two columns
}
else if(nodeLength > 4 && nodeLength <= 6) {
// display in two columns and three rows
}
/*
.
.
.
and so on
*/
}
var boxes = document.getElementsByClassName('box');
align(boxes);
Here 也是一样的。
【问题讨论】:
-
如果我没记错的话,有办法。我只是不太熟悉它。尝试查看 css 网格。我认为有
fill属性可能会促进这一点。
标签: javascript html css flexbox