下面是两行。
第一行 是
flex 1
和flex 2
的两个项目。第二行 是
flex 1
的两个项目。
根据规格 1A + 1B = 2A
但是,当计算中包含 填充 时,总和不正确,如下例所示。
问题
如何让弹性框在其计算中包含填充,以便示例中的框正确排列?
.Row{
display:flex;
}
.Item{
display:flex;
flex:1;
flex-direction:column;
padding:0 10px 10px 0;
}
.Item > div{
background:#7ae;
}
.Flx2{
flex:2;
}
<div class="Row">
<div class="Item">
<div>1A</div>
</div>
<div class="Item">
<div>1B</div>
</div>
<div class="Item Flx2">
<div>1C</div>
</div>
</div>
<div class="Row">
<div class="Item">
<div>2A</div>
</div>
<div class="Item">
<div>2B</div>
</div>
</div>
原文由 DreamTeK 发布,翻译遵循 CC BY-SA 4.0 许可协议
解决方案:
在子元素上设置
margin
而不是在您的padding
flex
项目上设置 —。问题:
计算是在没有
padding
的情况下完成的。所以;将padding
添加到flex
元素不会按照 规范 为您提供预期的宽度。具体文章
为什么不计算填充?这就是规范想要的。
如果你从元素的大小中减去
padding
和margin
,你会得到:1A + 1B = 2A
但是,在你这样做之后,填充被添加到元素中。元素越多,填充越多。这不是在宽度中计算的,导致您的陈述是错误的。