具有固定跨度的框以填充整个柱

问题描述 投票:0回答:1

我是第一次使用CSS-Grid用户:

我试图实现的是使用一个灵活的盒子系统,使用一个3列网格,我可以简单地添加1,2或3列大小的盒子;只使用一个班级。

我试图通过这个https://codepen.io/mathil/pen/WXarXB实现这一点:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-gap: 12px;
  width: 50%;
  margin-right: auto;
  margin-left: auto;
  background: grey;
}

.card-fullspan {
  grid-column: span 3;
}

.card-twothirdspan {
  grid-column: span 2;
}

.card-thirdspan {
  grid-column: span 1;
}
<div class="container">
  <div class="card-fullspan" style="background: red">Fullspan</div>
  <div class="card-twothirdspan" style="background:green">
    twothirdspan
  </div>
  <div class="card-thirdspan" style="background:green">
    thirdspan
  </div>
</div>

我知道我必须跨越它4,这对于fullspan来说是这样的:

.card-fullspan {
  grid-column: span 4;
}

但是当然这对其他两个不起作用,因为我不能用其他盒子的组合来达到它的总和。在右侧总会有12px天沟。

我知道可以为每个项添加不同的类或ID,但这不是理想的解决方案。

css css3 grid-layout css-grid
1个回答
0
投票

span关键字计算后续网格线。

因此,在三列网格中,当您希望项目跨越整行时,指定span: 3,而不是span: 4,这将创建一个额外的(隐式)列。

你的代码:

.card-fullspan {
   grid-column: span 4;  /* spans across 4 columns */
}

试试这个:

.card-fullspan {
   grid-column: span 3; /* spans across 3 columns */
}

或这个:

.card-fullspan {
   grid-column: 1 / 4; /* spans from grid-column-line 1 to 4 (3 columns) */
}

或这个:

.card-fullspan {
   grid-column: 1 / -1; /* spans from grid-column-line 1 from the start side
                           to grid-column-line: 1 starting from the end side
                           (note: negative integers work only with explicit grids  */
}

所有细节都在本节的规范中:

revised codepen

© www.soinside.com 2019 - 2024. All rights reserved.