CSS网格换行没有重复和自动填充?

Alb*_*lad 6 html css css-grid

我的网格中有 3 列。

我希望他们的行为是这样的:

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 1rem;
}
Run Code Online (Sandbox Code Playgroud)

如本代码笔所示:https ://codepen.io/chriscoyier/pen/xBmYJN

但我希望每行只有 3 列,最后一列为 3fr(其他 2 列大小的 3 倍),即“1fr 1fr 3fr”。我希望最后一列在满足其最小宽度时自动转到新行。

使用上面的示例时,当列不适合时,它们会自动折叠到新行。对于我的情况有办法做到这一点吗?无需手动配置网格模板区域并根据@media屏幕宽度调整它们?

我假设该功能来自重复()的自动填充参数...

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 1rem;
}
Run Code Online (Sandbox Code Playgroud)
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  grid-gap: 1rem;
}

.grid>div {
  background: #EDE7F6;
  padding: 1.5rem;
  border-radius: 1rem;
}

body {
  margin: 2rem;
  font: 12px system-ui;
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ved 1

这确实是可能的。技巧是将第三列分配为跨 3 列,同时保留grid-template-columntoauto-fillauto-fit

此外,通过使用auto-fit列,可以更好地调整它们,因为它们适合可用空间。

.container {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

div.col3 {
  grid-column: span 3;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="col1">First</div>
  <div class="col2">Second</div>
  <div class="col3">Third</div>
</div>
Run Code Online (Sandbox Code Playgroud)

代码笔