CSS 网格无法按预期工作(网格区域)

Nek*_*kto 1 css css-grid

有人可以帮我弄清楚为什么以下CSS Grid示例无法按预期工作吗?这是Codepen的链接:

.cards {
  margin: 0;
  padding: 1em;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-gap: 20px;
  grid-template-areas:
    "a a b"
    "c d d"
    "c e e";
}

.card {
  background-color: #1E88E5;
  padding: 2em;
  color: #FFFFFF;
  line-height: 1.4;
  border-radius: 4px;
}

.card1 { grid-area: "a"; }
.card2 { grid-area: "b"; background-color: #4CAF50; }
.card3 { grid-area: "c"; background-color: #FFCA28; }
.card4 { grid-area: "d"; background-color: #F06292; }
.card5 { grid-area: "e"; background-color: #FF8A80; }
Run Code Online (Sandbox Code Playgroud)

由于某种原因,网格区域的结构不正确。可能我忘记了一些东西,但我无法弄清楚到底是什么。任何帮助表示赞赏。谢谢!

VXp*_*VXp 7

只需从值中删除引号grid-area

.card1 { grid-area: a; }
.card2 { grid-area: b; background-color: #4CAF50; }
.card3 { grid-area: c; background-color: #FFCA28; }
.card4 { grid-area: d; background-color: #F06292; }
.card5 { grid-area: e; background-color: #FF8A80; }
Run Code Online (Sandbox Code Playgroud)

.card1 { grid-area: a; }
.card2 { grid-area: b; background-color: #4CAF50; }
.card3 { grid-area: c; background-color: #FFCA28; }
.card4 { grid-area: d; background-color: #F06292; }
.card5 { grid-area: e; background-color: #FF8A80; }
Run Code Online (Sandbox Code Playgroud)
body {
  text-align: center;
}

.wrap {
  max-width: 70em;
  text-align: left;
  margin: 0 auto;
}

.cards {
  margin: 0;
  padding: 1em;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-gap: 20px;
  grid-template-areas:
    "a a b"
    "c d d"
    "c e e";
}

.card {
  background-color: #1E88E5;
  padding: 2em;
  color: #FFFFFF;
  line-height: 1.4;
  border-radius: 4px;
  
  h3 {
    margin-top: 0;
  }
}

.card1 { grid-area: a; }
.card2 { grid-area: b; background-color: #4CAF50; }
.card3 { grid-area: c; background-color: #FFCA28; }
.card4 { grid-area: d; background-color: #F06292; }
.card5 { grid-area: e; background-color: #FF8A80; }
Run Code Online (Sandbox Code Playgroud)

  • 此外, grid-template-columns 变得无用,因为 grid-template-areas 接管并实际执行网格布局描述 https://codepen.io/anon/pen/qVprPO (2认同)
  • @G-Cyr,实际上,`grid-template-columns` 仍然很重要并且有所作为。使用 `1fr 1fr 1fr` 列在行上均匀分布空间。没有它,列会解析为“自动”宽度,从而呈现不同的布局。 (2认同)
  • @Michael_B 谢谢你或指出这一点!是的,我注意到布局在使用和不使用 `grid-template-columns` 时都会发生变化 (2认同)