css - 在网格模板行 : repeat() 中设置 "max rows"

标签 css css-grid

ul {
  display: grid;
  grid-template-rows: repeat(4, 2em);
  grid-auto-flow: column;
  column-gap: 1em;
}

li {
  list-style: none;
}
<hr>
<ul>
  <li>X</li>
  <li>X</li>
</ul>
<hr>
<ul>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
  <li>Y</li>
</ul>
</hr>

在此代码中,我有一个包含 grid-template-rows: Repeat(4, 2em); 的列表。

这将填充第一列直到第四行,然后开始第二列。 这很好。

我遇到的问题是,当我的元素少于 4 时,网格仍然是 4 行高。 有没有办法让网格增长到第四行然后开始添加列?

类似于grid-template-rows:repeat(max 4, 2em)

最佳答案

不是自然的(参见 this Q&A )。

您可以通过定义最大行数并将行高设置为auto并将实际高度定义移动到li。请参阅this CodePen .

ul {
  display: grid;
  grid-template-rows: repeat(4, auto);
  grid-auto-flow: column;
  column-gap: 1em;
  row-gap: 0.25em;
  border: 1px solid green;
  margin: 0;
  padding: 0;
}

li {
  list-style: none;
  height: 1.2em;
  background: lightblue;
}
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
</ul>
<hr>
<ul>
  <li>Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
  <li>Item 6</li>
  <li>Item 7</li>
  <li>Item 8</li>
  <li>Item 9</li>
</ul>
</hr>

关于css - 在网格模板行 : repeat() 中设置 "max rows",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77445727/

相关文章:

jquery - 响应视差或分层垂直文本效果

html - 带有显示 :inline-block but position is wrong 的 CSS ul li

html - 如果元素不存在/是可选的,不要在 CSS 网格中保留空间

css - 当 3 位数字就足够时,使用 6 位 HTML 颜色代码是否有任何技术优势?

html - 我无法更改围绕 IMG 标签的 DIV 的尺寸

html - 防止 valign ='middle' 被样式表声明覆盖?

css - 如何在不溢出、不滚动、不进行媒体查询的情况下自动调整固定容器内图像数组的大小?

html - 使网格容器填充列而不是行

html - 仅CSS的砌体布局

css - 如何在 CSS 网格布局中将文本溢出设置为省略号?