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

标签 html css flexbox css-grid

我有一个按列放置的动态元素列表(包含文本),我需要在每 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/

相关文章:

html - 六边形图像

html - CSS :hover only affect top div of nest

css - 删除带有包裹子项的 flexbox 上的额外间距?

html - 删除嵌套 CSS flex 上的自动高度分布?

php - 如何将帖子中的变量添加到数组中?

html - 将 aws lambda 响应作为 HTML 页面获取

html - Bootstrap 表单字段不会停留在包含 div 中

javascript - 在 JavaScript 中获取链接元素 cssRules/Rules

html - 仅CSS的砌体布局

javascript - Codepen 片段无法在本地计算机上运行