【发布时间】:2018-08-19 06:29:32
【问题描述】:
我有一个包含 x 个元素的 flex 容器,其中每个元素包含 y 个子元素。
我正在尝试根据孩子而不是父母平均分配容器空间。
目前发生的情况是:
{ [ 2 个孩子 ] [ 5 个孩子 ] [ 3 个孩子 ] }
[] 块目前的宽度相同,所以第一个块很宽敞(只有 2 个孩子),但中间的块很窄。
我需要用于样式目的的包装器,但似乎无法让空间划分基于子代而不是“父代平等,然后子代平等”。
我没有为任何东西指定宽度,只是flex: 1 0,并且孩子的数量不是静态的,所以我不能使用显式宽度。
body {
font-family: sans-serif;
font-size: 8px;
margin: 0px;
padding: 0px;
width: 1000px;
}
wrap,
wrap *,
p {
border: 1px solid #ddd;
margin: 10px;
box-sizing: border-box;
}
wrap {
height: 100px;
}
wrap,
container,
div {
display: flex;
flex-direction: row;
justify-content: space-between;
}
container,
container div,
container div span {
flex: 1 1;
background-color: rgba(0, 0, 0, .125);
}
span,
p {
padding: 10px;
display: flex;
align-items: center;
justify-content: center;
}
<wrap>
<span>Flex Element Here</span>
<container>
<div>
<span>A</span>
<span>B</span>
</div>
<div>
<span>C</span>
<span>D</span>
<span>E</span>
<span>F</span>
<span>G</span>
<span>H</span>
</div>
<div>
<span>I</span>
<span>J</span>
<span>K</span>
</div>
</container>
<span>Another Flex Element Here</span>
</wrap>
<p>A-B & I-K are roomy, while C-H is cramped. Ideally, space is divided so that these letter-boxes have the same width, while being wrapped. Number of letters is dynamic, so fixed-widths cannot be used.</p>
【问题讨论】:
-
在这里试图找出你的目标。不清楚。如果您能找到一种方法来澄清,也许添加您想要的布局的图像,这可能会有所帮助。
-
很确定你需要 JS,因为你是根据孩子来设计父母的……而 CSS 做不到。