强制弹性项目跨越整行宽度

时间:2018-01-04 18:01:57

标签: html css css3 flexbox

我尝试将前两个子元素保留在同一行,而第三个元素在全宽度下保持在其下方,同时使用flex。

我特别感兴趣的是在前2个元素上使用flex-growflex-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;
&#13;
&#13;

2 个答案:

答案 0 :(得分:45)

每当您希望弹性项占据整行时,请将其设置为width: 100% / flex-basis: 100%,并在容器上启用wrap

该项目现在消耗所有可用空间。兄弟姐妹被迫进入其他行。

&#13;
&#13;
.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;
&#13;
&#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>