【发布时间】:2021-02-24 07:54:06
【问题描述】:
我有一个按列放置的动态项目列表(包含文本),我需要在每 5th 个项目之后打破它。
我只有两个约束:
- 每个项目的宽度是
100px- 如果文本溢出,它必须环绕到下一行。 - 每列最多只能包含
5项。
项目数量未知已知。如果列表中的项目少于 5 个,则可以将它们保留在同一列中。 如果还有更多,那么它们必须换行到下一列。
由于我不知道项目的数量或其内容 - 我无法将 height 属性设置为父 list 容器。
那么如何强制父容器在每 5th 项进入下一列后中断。
.list {
border: 1px solid black;
display: flex;
flex-direction: column;
flex-wrap: wrap;
}
.item {
border: 1px solid red;
width: 100px;
overflow-wrap: anywhere;
}
.item:nth-child(5n) {
border: 1px solid blue;
}
<body>
<div class="list">
<div class="item">Text 1</div>
<div class="item">Text 2</div>
<div class="item">Long Text 3 must wrap to next line</div>
<div class="item">Text 4</div>
<div class="item">Text 5</div>
<div class="item">Text 6</div>
<div class="item">Text 7 is also long</div>
<div class="item">Text 8</div>
<div class="item">Text 9</div>
<div class="item">Text 10</div>
<div class="item">Text 11</div>
<div class="item">Text 12 is last item</div>
</div>
</body>
【问题讨论】:
-
问题是 Flexbox 需要定义断点来换行。如果您为项目定义了最大高度,这将是可能的,但由于项目的内容是动态的,因此只有在您拥有可以添加到项目的最大单词数时才会起作用。