如何隐藏隐式网格行?

Ian*_*Ian 9 html css css-grid

下面的代码段使用 CSS Grid 来增加宽容器的列数。对于窄容器(例如取消注释width: 80vw或调整示例大小),它添加了隐式行(grid-template-rows属性中只有 2 个是显式的)。如何仅保留 2 行,使“溢出”2×n 网格的网格项隐藏?

.wrapper {
  border: 2px solid #f76707;
  background-color: #fff4e6;
  display: grid;
  /* width: 80vw; */
  grid-template-columns: repeat(auto-fill, 200px);
  grid-template-rows: repeat(2, 1fr);
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
Run Code Online (Sandbox Code Playgroud)
<div class="wrapper">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Vad*_*kov 15

您可以将自动生成的行的高度设置为0pxusinggrid-auto-rows: 0;并使用隐藏它们overflow-y: hidden。演示:

.wrapper {
  border: 2px solid #f76707;
  background-color: #fff4e6;
  display: grid;
  grid-template-columns: repeat(auto-fill, 200px);
  grid-template-rows: repeat(2, 1fr);
  grid-auto-rows: 0; /* set height to 0 for autogenerated grid rows */
  overflow-y: hidden; /* hide grid items that overflow */
}

.wrapper > div {
  border: 2px solid #ffa94d;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
  color: #d9480f;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

  • 如果您在这个解决方案中使用 grid-gap ,您将得到一个有问题的结果。隐藏行的顶部(与网格间隙值一样多)将可见。您可以通过使用column-gap来解决这个问题,并通过向网格中的项目添加margin-bottom来修复“row-gap” (4认同)