我尝试将前两个子元素保留在同一行,而第三个元素在全宽度下保持在其下方,同时使用flex。
我特别感兴趣的是在前2个元素上使用flex-grow
和flex-shrink
属性(这是我不使用百分比的原因之一)但是第三个元素真的必须是满的宽度低于前两个。
label
元素在text
元素后以编程方式添加,如果出现错误,我无法更改代码。
如何强制标签元素在使用flex定位的其他两个元素下方100%宽度?
.parent {
display: flex;
align-items: center;
width: 100%;
background-color: #ececec;
}
.parent * {
width: 100%;
}
.parent #text {
min-width: 75px;
flex-shrink: 2.25;
}

<div class="parent">
<input type="range" id="range">
<input type="text" id="text">
<label class="error">Error message</label>
</div>
&#13;
答案 0 :(得分:45)
每当您希望弹性项占据整行时,请将其设置为width: 100%
/ flex-basis: 100%
,并在容器上启用wrap
。
该项目现在消耗所有可用空间。兄弟姐妹被迫进入其他行。
.parent {
display: flex;
flex-wrap: wrap;
align-items: center;
background-color: #ececec;
}
.error {
flex: 0 0 100%; /* fg: 0, fs: 0, fb: 100% */
border: 1px dashed red;
}
#range, #text {
flex: 1;
}
&#13;
<div class="parent">
<input type="range" id="range">
<input type="text" id="text">
<label class="error">Error message</label>
</div>
&#13;
答案 1 :(得分:4)
您似乎在寻找儿童的min-width
和父母的flex-wrap:wrap
:
.parent {
display: flex;
align-items: center;
flex-wrap: wrap;
}
.parent > * {
flex-grow: 1;
}
.parent > .error {
min-width: 100%;
background-color: rgba(255,0,0,.3);
}
<div class="parent">
<input type="range" id="range">
<input type="text" id="text">
<label class="error">Error message</label>
</div>