【问题标题】:CSS Grid: How do I make an item span the entire column? [duplicate]CSS Grid:如何使项目跨越整个列? [复制]
【发布时间】:2020-11-04 10:58:27
【问题描述】:

我有一个网格布局。 现在我希望.left 元素像这样跨越整个列:

但我尝试将其设为grid-row: auto / -1;,但它似乎不起作用。

我无法更改 html 结构,也无法将其硬编码为 grid-row: auto / span xx,因为元素的数量不确定。

如何让第一个元素始终跨越整个列?

section {
  counter-reset: spans;
  display: grid;
  grid-template-columns: 80px repeat(auto-fill, minmax(160px, 1fr));
  gap: 4px;
}

section span {
  counter-increment: spans;
  border: solid 1px #aaa;
}

section span::before {
  content: counter(spans);
}

.left {
  grid-row: auto / -1;
}
<section>
  <span class="left"></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
</section>

【问题讨论】:

    标签: html css css-grid


    【解决方案1】:

    解决方案是定义列和行。

        section {
      counter-reset: spans;
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      grid-template-rows: repeat(4, 1fr);
      gap: 4px;
    }
    
    section span {
      counter-increment: spans;
      border: solid 1px #aaa;
    }
    
    section span::before {
      content: counter(spans);
    }
    
    .left {
      grid-row: 1 / -1;
    }
    

    如果您遇到任何问题,请告诉我。

    【讨论】:

    • 但项目不确定。可能有 100 个项目,但只有 3 个项目。我怎样才能使这种布局通用?
    • 您可以使用自动填充 & 和 minmax 来做到这一点。但是您无法将第一个元素跨越整行。这是不可能的。你必须有一个定义的行才能做到这一点。
    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2017-12-17
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 2020-09-12
    相关资源
    最近更新 更多