css 在内部项目中使用带填充的Flexbox

w6mmgewl  于 2023-10-21  发布在  其他
关注(0)|答案(3)|浏览(122)

当两个项目中的一个部分填充了填充时,如何保持由flex-grow定义的两个项目之间的宽度比?它不起作用。比率取决于容器宽度。

<div style="display: flex;">
  <div style="flex-grow: 3; padding: 4rem; background-color: red;">
  </div>
  <div style="flex-grow: 2; background-color: green;">
  </div>
</div>
cig3rfwq

cig3rfwq1#

flex-grow属性不是为精确调整flex项的大小而设计的。它的工作是将容器中的空间分配给Flex项。因此,flex-grow不是这项工作的最佳工具。
相反,使用flex-basis,它相当于Flex容器中的widthheight(取决于flex-direction)。
然后添加box-sizing: border-box将padding集成到flex项的宽度中。
revised fiddle demo

<div style="display: flex;">
  <div style="flex-basis: 60%; padding: 4rem ; background-color: red; box-sizing: border-box;">
  </div>
  <div style="flex-basis: 40%; background-color: green;">  
  </div>
</div>
7gyucuyw

7gyucuyw2#

使用width(或flex-basis)代替flex-grow

* {
  box-sizing: border-box; /* Don't forgert this to include padding/border inside width calculation */
}
<div style="display: flex;height:20px;margin-bottom:10px;">
  <div style="flex-grow: 3;  background-color: red;">
  </div>
  <div style="flex-grow: 2; background-color: green;">
  </div>
</div>
replace by width
<div style="display: flex;height:20px;margin-bottom:10px;">
  <div style="width:calc((3 / 5) * 100%);  background-color: red;">
  </div>
  <div style="width:calc((2 / 5) * 100%); background-color: green;">
  </div>
</div>
then add padding
<div style="display: flex;margin-bottom:10px;">
  <div style="width:calc((3 / 5) * 100%); padding:3rem; background-color: red;">
  </div>
  <div style="width:calc((2 / 5) * 100%); background-color: green;">
  </div>
</div>
same result with flex-basis
<div style="display: flex;margin-bottom:10px;">
  <div style="flex-basis:calc((3 / 5) * 100%); padding:3rem; background-color: red;">
  </div>
  <div style="flex-basis:calc((2 / 5) * 100%); background-color: green;">
  </div>
</div>
xxls0lw8

xxls0lw83#

我通常在内部项目的内部标签中做填充样式:

<div style="display: flex;">
  <div style="flex-grow: 3; background-color: red;">
    <div style="padding: 4rem;">Some content</div>
  </div>
  <div style="flex-grow: 2; background-color: green;">
    Some content
  </div>
</div>

相关问题