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

MPa*_*aul 43 html css css3 flexbox

我试图在同一行保留前两个子元素,而第三个元素在全宽度下保持在其自己的下方,同时使用flex.

我特别感兴趣的是在前两个元素上使用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;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
  <input type="range" id="range">
  <input type="text" id="text">
  <label class="error">Error message</label>
</div>
Run Code Online (Sandbox Code Playgroud)

Mic*_*l_B 64

每当您希望弹性项占据整行时,将其设置为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;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
  <input type="range" id="range">
  <input type="text" id="text">
  <label class="error">Error message</label>
</div>
Run Code Online (Sandbox Code Playgroud)

  • “并在容器上启用‘wrap’。” &lt;-- 这就是我所缺少的。为什么我们需要这个‽ (3认同)

And*_*hiu 5

您似乎在寻找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);
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
  <input type="range" id="range">
  <input type="text" id="text">
  <label class="error">Error message</label>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

取决于是否是

  1. Flex-direction:row(默认为行)/在父容器上
  • 尝试在您想要全宽的孩子上使用 justify-self:stretch /
  1. Flex-direction-column / 在父容器上 - 尝试在您想要全宽度的子容器上使用align-self:stretch /

希望在某些情况下能帮助别人,通常对我有帮助