gpt4 book ai didi

html - 如何动态打破 FlexBox 列以开始新列

转载 作者:行者123 更新时间:2023-12-04 02:30:04 27 4
gpt4 key购买 nike

我有一个按列放置的动态元素列表(包含文本),我需要在每 5th 元素之后打破它。

Dynamic FlexBox multi-column

我只有两个约束:

  1. 每个元素的宽度为 100px - 如果文本溢出,它必须换行到下一行。
  2. 每列最多必须包含 5 个元素。

元素的数量是未知的。如果列表中的元素少于 5 个,则可以将它们保留在同一列中。如果有更多,则它们必须换行到下一列。 Dynamic FlexBox multi-column

因为我不知道元素的数量或它们的内容 - 我无法为父 list 容器设置 height 属性。

那么我如何强制父容器在每 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>

最佳答案

这是一个使用列的想法。有点 hacky,因为它需要设置一个很大的高度。

.list {
column-width:100px;
column-fill:auto;
column-gap:0;
height: 100vh;
}

.item {
border: 1px solid red;
}

.item:nth-child(5n) {
border: 1px solid blue;
margin-bottom: 100vh; /* to create the break */
}

body {
margin:0;
}
<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>

关于html - 如何动态打破 FlexBox 列以开始新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64801733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com