Flexbox:为什么flex-grow不适用于固定宽度的兄弟?

时间:2014-04-30 12:05:53

标签: css css3 flexbox

LIVE DEMO

考虑以下HTML和CSS:

<div class="wrapper">
  <div class="first">The CSS3 Flexible Box, or flexbox, is a layout mode providing for the arrangement .</div>
  <div class="second"></div>
</div>
<div class="wrapper">
  <div class="first"></div>
  <div class="second"></div>
</div>


.wrapper {
  display: flex;
  border: 1px solid black;
  width: 300px;
  height: 100px;
  margin-top: 30px;
}
.first {
  flex-grow: 1;
  background-color: #aaa;
}
.second {
  width: 80px;
  background-color: #ddd;
}

以及以下结果:

enter image description here

为什么第一个包装器不尊重.second&#39; width: 80px

如何使用flexbox修复

PLAYGROUND HERE

1 个答案:

答案 0 :(得分:7)

您需要使用flex: 1;代替 flex-grow: 1;

.first {
    flex: 1;
    background-color: #aaa;
}

Demo


另外,我想指出就IE而言,Flexbox支持并不好,所以如果任何人对类似布局感兴趣,而且比

更多
<div class="wrapper">
    <div class="second"></div>
    <div class="first"></div>
</div>


.wrapper {
    border: 1px solid black;
    width: 300px;
    height: 100px;
    margin-top: 30px;
}

.wrapper .first {
    background: red;
    height: 100%;
    margin-right: 80px;
}

.wrapper .second {
    height: 100%;
    width: 80px;
    float: right;
    background: blue;
}

Demo (请注意,我交换了DOM中div的顺序)