如何创建具有 3 个不同 head 元素的 CSS GRID

How to create a CSS GRID with 3 distinct head elements

我使用 CSS display: grid 得到一个列表,如下所示

我的任务必须进行编辑,以便列表在 PC 上显示时看起来像这样,而在我的手机上它看起来像第一张图片。 前 3 个元素将比其余元素大。 响应式支持

这是我的代码:

HTML:

.grid {
    width: 638px;
    display: grid;
    grid-row-gap: 68px;
    grid-column-gap: 12px;
    grid-template-rows: auto auto;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    justify-content: space-between;
}

.item {
   border: 3px solid green;
   width: auto;
   height: 150px;
}
<div class="grid">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

我试图修复它,但它不起作用,谢谢大家!

您可能会从 12 列网格重新考虑它,并重置网格列跨越到该项目。

可能的例子

.grid {
    width: 638px;
    display: grid;
    grid-row-gap: 68px;
    grid-column-gap: 12px;
    grid-template-rows: auto auto;
    grid-template-columns: repeat(auto-fit, minmax(35px, 1fr));/* 35 x 4 = 140 */
    justify-content: space-between;
}

.item {
   border: 3px solid #4285F4;
   border-radius:3px;
   width: auto;
   height: 150px;
   grid-column:auto / span 4; /* about 35px X 4 of width */
   margin-right:8px;
}
.item:nth-child(3), .item:nth-child(3)~.item {
margin-right:0;
}
.item:nth-child(3)~.item {
grid-column:auto / span 3;
}
<div class="grid">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>

跨列规则和网格模板列可以通过您要使用的媒体查询进行重置。

您必须使用包含 3 和 4 的数字作为乘数。例如12。所以你把格子分成12 columns。然后你使用 nth-child 伪选择器来选择前 3 个并给它们一个 span of 4 和每个其他 child 一个 span of 3.

with :nth-child(-n+3) 你 select 前 3 个元素。因为您希望它们是一行中的 3 个框,所以需要 span 4 以适应 12 columns.

with :nth-child(n+3) 你 select 前 3 个例外的所有元素。现在你需要让它们 span 3 列以适应 12 列宽行中的 4 个框。

.grid {
    width: 638px;
    display: grid;
    grid-row-gap: 68px;
    grid-column-gap: 12px;
    grid-template-rows: auto;
    grid-template-columns: repeat(12, 1fr);
}

.item {
   border: 3px solid green;
   height: 150px;
}

.item:nth-child(n+3) {
  grid-column: span 3;
}

.item:nth-child(-n+3) {
  grid-column: span 4;
}
<div class="grid">
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
</div>