CSS grid-template-areas: 그리드 영역 정의 및 명명

CSS grid-template-areas 속성은 그리드 영역을 정의하는 동시에 각 영역에 이름을 할당합니다.

.grid {
  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"
    "b c c"
    "b . ."; */
  /* grid-template-areas:
    "c c c"
    ". b ."
    "a a a"; */
}
body {
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
}
.grid {
  width: 200px;
  height: 200px;
  background: #ddd;
  color: #fff;
  display: grid;
}
.a, .b, .c {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  font-weight: 700;
}
.a {
  background: #24c0a5;
  grid-area: a;
}
.b {
  background: #4011c5;
  grid-area: b;
}
.c {
  background: #b42809;
  grid-area: c;
}
<div class="grid">
  <div class="a">A</div>
  <div class="b">B</div>
  <div class="c">C</div>
</div>

불러오는 중...

grid-template-areas가 정의하는 영역은 그리드 아이템에 자동으로 연결되지 않습니다. 그리드 배치 속성인 grid-row-start, grid-row-end, grid-column-start, grid-column-end, 또는 이 속성들의 단축 속성인 grid-row, grid-column, grid-area를 사용해서 영역에 아이템을 배치하세요.

구문

/* 키워드 값 */
grid-template-areas: none;

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

/* 전역 값 */
grid-template-areas: inherit;
grid-template-areas: initial;
grid-template-areas: revert;
grid-template-areas: revert-layer;
grid-template-areas: unset;

none

그리드 컨테이너가 이름 있는 영역을 하나도 정의하지 않습니다.

<string>+

지정한 문자열 각각이 그리드의 행을 정의하고, 문자열 내에서 공백으로 구분한 각각의 으로 그리드의 열을 정의합니다. 여러 행과 열에 같은 이름을 사용하면 해당 칸 모두를 차지하는 영역을 정의할 수 있습니다. 다만, 영역의 형태는 항상 직사각형이어야 합니다.

예제

레이아웃 구성하기

<article>
  <header>헤더</header>
  <nav>메뉴</nav>
  <main>본문</main>
  <footer>푸터</footer>
</article>
article {
  color: #fff;
  height: 300px;
  display: grid;
  grid-template-areas:
    "header header"
    "nav    main"
    "nav    footer";
  grid-template-columns: 150px 1fr;
  grid-template-rows: 50px 1fr 50px;
}

header {
  background: #24c0a5;
  grid-area: header;
}

nav {
  background: #4011c5;
  grid-area: nav;
}

main {
  background: #b42809;
  grid-area: main;
}

footer {
  background: #24c0a5;
  grid-area: footer;
}

불러오는 중...

명세

브라우저 호환성

IEEdgeChromeSafariFirefoxiOS SafariAndroid WebViewAndroid ChromeAndroid FirefoxSamsung Internet
grid-template-areas
none
MDN browser-compat-data