ข้ามไปเนื้อหาหลัก

CSS grid-template-areas — layout เป็น visual map

grid-template-areas ให้ตั้งชื่อ area แล้วกำหนด layout ด้วย ASCII art อ่านง่ายกว่า grid-column / grid-row มาก

.layout {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: 60px 1fr 50px;
  grid-template-areas:
    "header  header"
    "sidebar content"
    "footer  footer";
}

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

ใช้ . สำหรับ cell ว่าง:

grid-template-areas:
  "logo  nav    nav"
  ".     main   aside"
  "foot  foot   foot";

Responsive ด้วย media query — แค่เปลี่ยน area map:

@media (max-width: 768px) {
  .layout {
    grid-template-columns: 1fr;
    grid-template-areas:
      "header"
      "content"
      "sidebar"
      "footer";
  }
}

ข้อดีคือ structure ชัดเจนมากตอนอ่าน code — เห็น layout ได้เลยโดยไม่ต้อง render ข้อจำกัด: area ต้องเป็น rectangle เท่านั้น ไม่รองรับ L-shape