如何使用flexbox强制分成相等的部分

saw*_*awa 11 html css css3 flexbox

在像这样的dom结构中:

<div id="1">
  <div id="2">
    <div id="3">
    </div>
  </div>
  <div id="4">
    <div id="5">
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

用css指定为:

#1{
  display: flex;
  flex-direction: row;
}
#2, #4{
  flex: 1;
}
Run Code Online (Sandbox Code Playgroud)

只要id 3和5中内容宽度的总和不超过id为1的dom的宽度,id为2和4的div就会均匀分布.

当总和超过宽度时,它们不是均匀分布的,而具有更宽内容的一个将占用更多宽度.即使在这种情况下,如何使用flexbox强制2和4占用均匀宽度?

我不想按百分比使用宽度规格.我想坚持使用flexbox.

Pav*_*vlo 15

如果您希望元素独立增长或缩小到其内容,请指定零弹性基础:

flex-basis: 0;
Run Code Online (Sandbox Code Playgroud)

但是,我的演示在Chrome中无法正常工作:无论零基础设置如何,大图像都会拉伸它的父容器.作为解决方法,可以设置最大宽度:

img {
  max-width: 100%;
  height: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • `flex-basis:100%;`将以同样的方式完成这个技巧. (7认同)

小智 6

要强制平均分配,您必须添加width: 0到所有弹性项目。在阅读了 Manuel Matuzovic 的文章后,我想到了这一点,该文章对如何flex-grow工作有一个非常好的深入总结。

https://css-tricks.com/flex-grow-is-weird/