CSS Flexbox问题:为什么我的flexchildren的宽度受其内容影响?
我box-flex: 1
的两个孩子每个都被赋予一个box-flex: 1
的风格box-flex: 1
。 我的理解是,它们的宽度应该相互相等 (均占据其父级柔性盒总宽度的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>
解决方法是将width: 0
添加到.box1
元素。
请参阅: http : //jsfiddle.net/thirtydot/fPfvN/
我想我在这里发现了这个: http : //oli.jp/2011/css3-flexbox/
包含文本内容的盒子元素的首选宽度当前是没有换行符的文本,导致非常不直观的宽度和弹性计算→在一个盒子元素上声明一个宽度超过几个字的孩子(想知道为什么flexbox演示全是“1,2,3”?)
请注意,对于您的情况,使用display: table
看起来要容易得多display: table
+ table-layout: fixed
: http : //jsfiddle.net/thirtydot/fPfvN/1/
这甚至可以在更多的浏览器中工作。