Menu
CoddyTech

Các vùng được đặt tên

Thuộc phần Thành thạo CSS trong hành trình HTML của Coddy. Bài học 33 trên 43.

Thay vì đặt các mục bằng số dòng, bạn có thể đặt tên cho các phần trong lưới bằng thuộc tính grid-template-areas. Cách này rất hữu ích để tạo bố cục gọn gàng, dễ đọc, đặc biệt khi làm việc với nhiều phần như đầu trang, thanh bên và chân trang. Hãy xem ví dụ bên dưới:

Chúng ta định nghĩa một vùng chứa bằng CSS Grid và dùng grid-template-areas để tạo bố cục có tên:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: auto auto auto;
  grid-template-areas: 
    "header header header"
    "sidebar content content"
    "footer footer footer";
}

Mỗi dòng văn bản tạo thành một hàng, và mỗi từ trong dòng là một phần của lưới. Nếu bạn lặp lại một từ, vùng đó sẽ trải rộng hơn.

Sau đó, bạn ghép các phần tử HTML với những tên đó như sau:

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

Thử thách

Dễ

Tạo bố cục CSS grid cho một trang web cơ bản với các vùng như trong hình bên dưới:

Đặt các thuộc tính sau cho bộ chọn .container:

  • Đặt display thành grid
  • Đặt grid-template-columns thành 1fr 3fr
  • Đặt grid-template-rows thành auto 1fr auto
  • Đặt grid-template-areas thành:

    "header header"

    "profile main"

    "footer footer"

Gán từng phần tử vào vùng tương ứng. Ví dụ, với .header, đặt grid-area thành header.

Tự làm thử

<!DOCTYPE html>
<html>
<head>
  <style>
    .container {
      height: 100vh;
      gap: 10px;
      /* Set up your grid container here */
      
    }
    
    .header {
      /* Assign to header area */
      background-color: #f1c40f;
      padding: 20px;
    }
    
    .profile {
      /* Assign to profile area */
      background-color: #3498db;
      padding: 20px;
    }
    
    .main {
      /* Assign to main area */
      background-color: #2ecc71;
      padding: 20px;
    }
    
    .footer {
      /* Assign to footer area */
      background-color: #e74c3c;
      padding: 20px;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="header">Header</div>
    <div class="profile">Profile</div>
    <div class="main">Main Content</div>
    <div class="footer">Footer</div>
  </div>
</body>
</html>
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Thành thạo CSS

Tự luyện tập: Playground Web