html - 如果为列和行设置了模板,如何使 CSS 网格自动换行?

标签 html css css-grid

我的 .wrapper 元素中有 12 个子 div,我想将它们堆叠在一起。数字 12 实际上是动态的,所以我不知道我会生多少个 child 。现在我的网格布局是这样的:

.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: auto auto;
  grid-auto-flow: column dense;
  grid-gap: 10px;
}

这很好,直到网格开始包裹元素(布局已满,网格为 3x2,包含 6 个元素)。第 7 个、第 8 个和所有其余的都堆叠在前 6 个旁边,尽管我希望它们使用相同的模板在新的一行中(所以基本上我的网格将变成 2x(3x2))。

解释本身可能没有太大意义,请查看 Codepen

如何让第六个之后的元素换行?

最佳答案

您可以使用自动流来形成网格(如@vals 的回答建议),然后通过一组 :nth-child() 规则设置填充顺序的模式:

.wrapper {
    border: 2px solid #f76707;
    border-radius: 5px;
    background-color: #fff4e6;
}

.wrapper > div {
    border: 2px solid #ffa94d;
    border-radius: 5px;
    background-color: #ffd8a8;
    padding: 1em;
    color: #d9480f;
}
.wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-flow: row dense;
  grid-gap: 10px;
}

.wrapper > :nth-child(6n + 1),
.wrapper > :nth-child(6n + 2) {
  grid-column: 1;
}

.wrapper > :nth-child(6n + 3),
.wrapper > :nth-child(6n + 4) {
  grid-column: 2;
}

.wrapper > :nth-child(6n + 5),
.wrapper > :nth-child(6n + 6) {
  grid-column: 3;
}
<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
  
  <div>Six</div>
  <div>Seven</div>
  <div>Eight</div>
  <div>Nine</div>
  <div>Ten</div>
  <div>Eleven</div>
  <div>Twelve</div>
  
  <div>Thirteen</div>      
  <div>Fourteen</div>      
  <div>And so on</div>
</div>

关于html - 如果为列和行设置了模板,如何使 CSS 网格自动换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51218095/

相关文章:

javascript - jQuery - 如何在循环中根据用户选择创建元素?

php - 试图将 sql 数据库显示到 php 网页中,CSS 没有工作

html - Chrome 中的 CSS 网格布局似乎无法在超过 1000 行的情况下正常工作

html - 为什么网格项会溢出网格容器?

html - 具有固定粘性页脚和主要可滚动部分的 CSS 网格

javascript - 在网页上加载/显示大量数据

css - 横幅图片在移动设备上没有响应

html - Css - 我如何将这个内部 div 放在外部 div 的中心?

javascript - css文件的延迟加载

html - Bootstrap 行和文本