CSS Flexbox问题:为什么我的flexchildren的宽度受其内容的影响?

时间:2011-11-02 17:53:49

标签: html css css3 flexbox

我的flexbox的两个孩子都被赋予了box-flex: 1的样式。我的理解是它们的宽度应该彼此相等(两者都占据其父Flexbox总宽度的 50%)。但是当内容添加到子节点时,它们的宽度会发生变化(取决于内容和填充内容)!为什么会这样?

CSS:

.hasFlex {
   display: box;
   display: -webkit-box;
   display: -moz-box;
   -webkit-box-align: start;
   -moz-box-align: start;
   box-align: start;}
.box0 {
   -webkit-box-flex: 0;
   -moz-box-flex: 0;
   box-flex: 0;}
.box1 {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;}
.box2 {
   -webkit-box-flex: 2;
   -moz-box-flex: 2;
   box-flex: 2;}
.box3 {
   -webkit-box-flex: 3;
   -moz-box-flex: 3;
   box-flex: 3;}
.container {
margin-bottom: 10px;
}

HTML:

<div class="container hasFlex">
<div id="main" role="main" class="box1">
    <div class="innerBG">
      a bunch of stuff (divs, text, etc) go here
    </div>
</div>
<div id="sidebar" class="box1">
    <div class="innerBG">
       a bunch more stuff (divs, text, etc.) go here
    </div>
</div>
</div>

1 个答案:

答案 0 :(得分:82)

解决方法是将width: 0添加到.box1元素。

请参阅: http://jsfiddle.net/thirtydot/fPfvN/

我想我在这里找到了自己:http://oli.jp/2011/css3-flexbox/

  

包含文本内容的box元素子项的首选宽度是   目前没有换行的文字,导致非常不直观   width和flex计算→在box元素子元素上声明宽度   用几句话来说(难怪为什么会有Flexbox演示   “1,2,3”?)

请注意,对于您的情况,使用display: table + table-layout: fixedhttp://jsfiddle.net/thirtydot/fPfvN/1/看起来要容易得多。尽管如此,flexbox确实允许您以display: table无法与之竞争的方式快速更改内容。