CSS / Grid template areas

Grid template areas

grid-template-areas нь layout-ийг нэрлэсэн бүс ашиглан зохиодог хамгийн уншихад хялбар Grid арга юм. CSS-ийг харахад хуудасны бүтэц шууд харагддаг.

Үндсэн синтакс

css
.container {
  display: grid;
  grid-template-areas:
    "header  header"
    "sidebar main  "
    "footer  footer";
}

Нэг хаалт = нэг мөр. Нэг үг = нэг grid cell. Нэг нэртэй нүднүүд нэгдэж нэг бүс болно.

grid-area — item-ийг бүсэд оноох

css
.header {
  grid-area: header;
}
.sidebar {
  grid-area: sidebar;
}
.main {
  grid-area: main;
}
.footer {
  grid-area: footer;
}
html
<div class="container">
  <header class="header">Гарчиг</header>
  <aside class="sidebar">Sidebar</aside>
  <main class="main">Үндсэн агуулга</main>
  <footer class="footer">Footer</footer>
</div>

Бүрэн жишээ — хуудасны layout

css
.page {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-rows: 64px 1fr 56px;
  grid-template-areas:
    "header  header"
    "sidebar main  "
    "footer  footer";
  min-height: 100vh;
  gap: 0;
}

.header {
  grid-area: header;
  background: #0f172a;
}
.sidebar {
  grid-area: sidebar;
  background: #0b1120;
}
.main {
  grid-area: main;
  padding: 24px;
}
.footer {
  grid-area: footer;
  background: #0f172a;
}

Layout нь дараах байдлаар харагдана:

код
+---------------------------+
|       header              |
+----------+----------------+
|          |                |
| sidebar  |      main      |
|          |                |
+----------+----------------+
|       footer              |
+---------------------------+

Хоосон нүд — цэг ашиглах

Бүсийн зарим нүдийг хоосон үлдээхэд . тэмдэг ашиглана:

css
.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-areas:
    "logo  .     nav  "
    "hero  hero  hero "
    ".     main  .    ";
  /* дунд баганын logo ба nav хоорондох нүд хоосон */
}

Responsive — media query-тэй хослуулах

grid-template-areas-ийн хамгийн том давуу тал нь responsive layout бичихэд маш тодорхой болдог:

css
/* Гар утас — нэг баганатай */
.page {
  display: grid;
  grid-template-columns: 1fr;
  grid-template-areas:
    "header"
    "main  "
    "sidebar"
    "footer";
}

/* Том дэлгэц — sidebar хажуудаа */
@media (min-width: 768px) {
  .page {
    grid-template-columns: 220px 1fr;
    grid-template-areas:
      "header  header"
      "sidebar main  "
      "footer  footer";
  }
}

.header {
  grid-area: header;
}
.sidebar {
  grid-area: sidebar;
}
.main {
  grid-area: main;
}
.footer {
  grid-area: footer;
}

Dashboard layout жишээ

css
.dashboard {
  display: grid;
  grid-template-columns: 200px 1fr 1fr;
  grid-template-rows: 60px 1fr 1fr 50px;
  grid-template-areas:
    "nav    header  header "
    "nav    stats   stats  "
    "nav    chart   sidebar"
    "nav    footer  footer ";
  height: 100vh;
  gap: 12px;
  padding: 12px;
}

.nav {
  grid-area: nav;
}
.header {
  grid-area: header;
}
.stats {
  grid-area: stats;
}
.chart {
  grid-area: chart;
}
.sidebar {
  grid-area: sidebar;
}
.footer {
  grid-area: footer;
}

Зөвлөмж

grid-template-areas-д нэр зэрэгцүүлэн бичвэл layout нь нүдэнд тодорхой харагдана:

css
/* Муу — уншихад хэцүү */
grid-template-areas: "h h" "s m" "f f";

/* Сайн — харахад л layout харагдана */
grid-template-areas:
  "header  header"
  "sidebar main  "
  "footer  footer";

Дараагийн хичээлд:

Grid-ийн дэвшилтэт боломжуудыг судална: grid-column, grid-row, span, auto-fill, auto-fit, minmax(). Item-ийг нэгээс олон нүдэнд дэлгэн байрлуулах арга.