【问题标题】:Why isn't grid-template-areas property valid? [duplicate]为什么 grid-template-areas 属性无效? [复制]
【发布时间】:2021-06-19 08:16:11
【问题描述】:

我有以下代码:

CSS

.items {
    display: grid;
    grid-template-columns: 1fr 40px 1fr 40px 1fr;
    grid-template-columns: auto 40px auto;
    grid-template-areas: 
    "i1 . i2 . i3"
    ". . ."
    "i4 . i5 . i6";
}
.i1 {
    grid-area: i1;
}
.i2 {
    grid-area: i2;
}
.i3 {
    grid-area: i3;
}
.i4 {
    grid-area: i4;
}
.i5 {
    grid-area: i5;
}
.i6 {
    grid-area: i6;
}

HTML

<div class="i1"></div>
<div class="i2"></div>
<div class="i3"></div>
<div class="i4"></div>
<div class="i5"></div>
<div class="i6"></div>

一切都变得一团糟,在开发工具中,我可以看到我在定义 grid-template-areas 属性的行上收到一条警告,上面写着“无效的属性值”。

如果我删除“......”从属性值开始,一切都开始工作了。

但我需要行之间的缩进。我怎样才能让它发挥作用?

【问题讨论】:

  • "..." 只有三列。让它“.....”你需要在每个字符串中的列数相等。
  • 为什么不使用 grid-row-gap 来设置行间缩进?
  • @MichaelBenjamin 谢谢,问题已经解决了
  • @cse_vikashgupta 据我所知很多浏览器都不支持,还是现在可以使用?

标签: html css grid css-grid


【解决方案1】:

将您的网格简化为:

i1 i2 i3
i4 i5 i6

完成此操作后,应用40px 的网格行/列间隙。

.items {
  display: grid;
  grid-column-gap: 40px;
  grid-row-gap: 40px;
  grid-template-columns: repeat(1fr);
  grid-template-areas:
    "i1 i2 i3"
    "i4 i5 i6";
}

.i1 { grid-area: i1; }
.i2 { grid-area: i2; }
.i3 { grid-area: i3; }
.i4 { grid-area: i4; }
.i5 { grid-area: i5; }
.i6 { grid-area: i6; }
<div class="items">
  <div class="i1">1</div>
  <div class="i2">2</div>
  <div class="i3">3</div>
  <div class="i4">4</div>
  <div class="i5">5</div>
  <div class="i6">6</div>
</div>

这是一个有边距的版本(如果grid-gap 不可用):

.items {
  display: grid;
  grid-template-columns: repeat(1fr);
  grid-template-areas:
    "i1 i2 i3"
    "i4 i5 i6";
}

.i1, .i2, .i3 { margin-bottom: 20px; }
.i4, .i5, .i6 { margin-top: 20px; }

.i1, .i4 { margin-right: 20px; }
.i2, .i5 { margin-left: 20px; margin-right: 20px; }
.i3, .i6 { margin-left: 20px; }

.i1 { grid-area: i1; }
.i2 { grid-area: i2; }
.i3 { grid-area: i3; }
.i4 { grid-area: i4; }
.i5 { grid-area: i5; }
.i6 { grid-area: i6; }
<div class="items">
  <div class="i1">1</div>
  <div class="i2">2</div>
  <div class="i3">3</div>
  <div class="i4">4</div>
  <div class="i5">5</div>
  <div class="i6">6</div>
</div>

【讨论】:

  • 或者使用grid-gap: 40px;而不是grid-column-gap: 40px; grid-row-gap: 40px;来简化它。
  • @tacoshy 我将规则分开,以防行与列之间的间距不同。
  • 不用自己解释了。这不仅仅是一个正当的理由。我只是给出了那个评论,以便 OP 可以在他想要的时候缩短代码。
  • 现在可以使用这些属性了吗?据我所知,很多浏览器都不支持这些属性
  • 我在 www.caniuse.com 上检查过这个属性,IE 11 不支持它
猜你喜欢
  • 2020-08-27
  • 2017-09-13
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 2020-04-18
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多