【发布时间】:2016-09-18 03:19:07
【问题描述】:
根据flex-basis MDN documentation flex-basis 属性计算与内容框相关的弹性项目的大小,除非box-sizing CSS 属性定义了不同的选项。但是我在当前的 Chrome 和 IE11 中都没有得到想要的结果。
我写了两个例子:
.horizontal-layout {
display: flex;
flex-direction: row;
}
header > span {
flex: 1 1 100%;
}
header > .button {
background-color: grey;
}
header > .app-name {
background-color: orange;
}
header#with-border-padding > span {
box-sizing: border-box; /* this is not useful at all */
}
header#with-border-padding > .button {
border: 1px solid black;
padding-left: 5px;
}
<header class="horizontal-layout">
<span class="button">A</span>
<span class="app-name">B</span>
<span class="button">C</span>
</header>
<header id="with-border-padding" class="horizontal-layout">
<span class="button">A</span>
<span class="app-name">B</span>
<span class="button">C</span>
</header>
jsfiddle
-
第一个例子是一个
<header>,有3个<span>标签,每个标签都有一个flex: 1 1 100%(flex-basis是100%)。因此,每个span都被赋予了header的第三部分。 -
第二个示例 与第一个相同,但在这种情况下,第二个
span有一些边框和一些填充。我认为flex-grow会产生与第一个示例相同的结果,但事实并非如此。然后我看到flex-basisMDN documentation 并明白我必须将box-sizing: border-box;设置为弹性项目,以便flex-basis与border-box相关。但它也没有! 有人知道为什么吗?
如果有人能澄清第二个示例问题,谢谢。
在我的代码中,您可以轻松地比较两个示例之间<span> 标记的大小。
【问题讨论】: