我想创建一个这样的布局:
黑色边框表示窗口(或容器)的宽度。
粉色方块很简单divs
,我将其视为按钮。它们始终具有相同的四个大小,并且总是正方形。
单个按钮的最大宽度必须为300px
,最小为50px
。
当有足够的空间时,所有四个按钮都位于同一行上,否则最后两个按钮将位于新行上。
按钮可调整大小。重要的是它们永远不会小于50px
并且总是正方形。
我该怎么办?我曾尝试使用Flexbox,例如:https://codepen.io/anon/pen/NVpzYe
但是显然它不起作用。然后我不知道如何设置正确的高度。
.container {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
}
.firstChildren {
width: 50%;
border: 1px solid black;
display: flex;
height: 50px;
minWidth: 50px;
}
.secondChildren {
width: 50%;
border: 1px solid black;
height: 50px;
}
<div class="container">
<div class="firstChildren">
<div class="secondChildren" />
<div class="secondChildren" />
</div>
<div class="firstChildren">
<div class="secondChildren" />
<div class="secondChildren" />
</div>
</div>
答案 0 :(得分:2)
维护与嵌套弹性框相同的标记:
为flex: 1 1 50%
使用firstChildren
,以便它们在行中共享相等的空间,
在flex: 1
元素上设置secondChildren
以延伸到可用空间,
在min-width: 50px
上将secondChildren
设置为最小宽度要求,
现在向框添加一些边距,并在伪元素上使用padding-top: 100%
使框成为正方形(请注意,框的限制为300px max-width
应用于firstChild
元素以调整此边距)-尝试更改窗口大小并检查以下代码段:
* {
box-sizing: border-box;
}
.container {
display: flex;
flex-wrap: wrap;
}
.firstChildren {
flex: 1 1 50%;
display: flex;
max-width: 640px; /* max-width = 300px + 4 x 10px margin */
}
.secondChildren {
flex: 1;
border: 1px solid black;
min-width: 50px; /* minimum width */
margin: 10px;
}
.secondChildren:after { /* create squares */
content: '';
display: inline-block;
vertical-align: top;
padding-top: 100%;
}
<div class="container">
<div class="firstChildren">
<div class="secondChildren"></div>
<div class="secondChildren"></div>
</div>
<div class="firstChildren">
<div class="secondChildren"></div>
<div class="secondChildren"></div>
</div>
</div>
答案 1 :(得分:0)
注意!
您必须使用</div>
而不是/
关闭div
.container {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
}
.firstChildren {
display: flex;
flex-wrap: nowrap;
flex: 1 0 25%;
margin: 2rem;
}
.secondChildren {
flex: 0 1 50%;
height: 30vh;
background: pink;
margin: 2rem;
min-width: 50px;
max-width: 300px;
}
<div class="container">
<div class="firstChildren">
<div class="secondChildren"></div>
<div class="secondChildren"></div>
</div>
<div class="firstChildren">
<div class="secondChildren"></div>
<div class="secondChildren"></div>
</div>
</div>