grid-template-areas

Baseline 已广泛支持

此功能已非常成熟,可在多种设备和浏览器版本上使用。自 2017 年 10 月以来,它已在各大浏览器中可用。

grid-template-areas CSS 属性用于指定命名的 网格区域,从而建立网格中的单元格并为其分配名称。

试一试

grid-template-areas:
  "a a a"
  "b c c"
  "b c c";
grid-template-areas:
  "b b a"
  "b b c"
  "b b c";
grid-template-areas:
  "a a ."
  "a a ."
  ". b c";
<section class="default-example" id="default-example">
  <div class="example-container">
    <div class="transition-all" id="example-element">
      <div>One (a)</div>
      <div>Two (b)</div>
      <div>Three (c)</div>
    </div>
  </div>
</section>
#example-element {
  border: 1px solid #c5c5c5;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: repeat(3, minmax(40px, auto));
  grid-gap: 10px;
  width: 200px;
}

#example-element :nth-child(1) {
  background-color: rgb(0 0 255 / 0.2);
  border: 3px solid blue;
  grid-area: a;
}

#example-element :nth-child(2) {
  background-color: rgb(255 0 200 / 0.2);
  border: 3px solid rebeccapurple;
  grid-area: b;
}

#example-element :nth-child(3) {
  background-color: rgb(94 255 0 / 0.2);
  border: 3px solid green;
  grid-area: c;
}

这些区域不与任何特定的网格项目关联,但可以通过网格布局属性 grid-row-startgrid-row-endgrid-column-startgrid-column-end 以及它们的简写形式 grid-rowgrid-columngrid-area 进行引用。

语法

css
/* Keyword value */
grid-template-areas: none;

/* <string> values */
grid-template-areas: "a b";
grid-template-areas:
  "a b ."
  "a c d";

/* Global values */
grid-template-areas: inherit;
grid-template-areas: initial;
grid-template-areas: revert;
grid-template-areas: revert-layer;
grid-template-areas: unset;

none

网格容器未定义任何命名的网格区域。

<string>

每列出的一个独立字符串会创建一个行,字符串中的每个单元格会创建一个列。同一行内及不同行之间具有相同名称的多个单元格标记会创建一个跨越相应网格单元格的单个命名网格区域。除非这些单元格形成一个矩形,否则声明无效。

网格中所有剩余的未命名区域可以使用空单元格标记来引用。空单元格标记是一个或多个 . (U+002E 句号) 字符的序列,例如 ......... 等。空单元格标记可用于在网格中创建空白空间。

正式定义

初始值none
应用于网格容器
继承性
计算值同指定值
动画类型离散

正式语法

grid-template-areas = 
none |
<string>+

示例

指定命名网格区域

HTML

html
<div id="page">
  <header>Header</header>
  <nav>Navigation</nav>
  <main>Main area</main>
  <footer>Footer</footer>
</div>

CSS

css
#page {
  display: grid;
  width: 100%;
  height: 250px;
  grid-template-areas:
    "head head"
    "nav  main"
    ".  foot";
  grid-template-rows: 50px 1fr 30px;
  grid-template-columns: 150px 1fr;
}

#page > header {
  grid-area: head;
  background-color: #8ca0ff;
}

#page > nav {
  grid-area: nav;
  background-color: #ffa08c;
}

#page > main {
  grid-area: main;
  background-color: #ffff64;
}

#page > footer {
  grid-area: foot;
  background-color: #8cffa0;
}

在上述代码中,一个空标记 (.) 被用于在网格容器中创建一个未命名区域,我们用它在网格的左下角创建了一个空白空间。

结果

规范

规范
CSS 网格布局模块 Level 2
# grid-template-areas-属性

浏览器兼容性

另见