Bạn đã bao giờ rơi vào thảm cảnh muốn thay đổi vị trí cái Sidebar sang bên phải mà phải lội ngược vào file HTML để cắt dán code chưa? Hay tệ hơn, bạn phải vật lộn với hàng tá con số phần trăm (%), margin và padding chỉ để các khối hộp không nhảy lung tung mỗi khi co giãn màn hình? Cách CSS Grid Area xuất hiện như một "vị cứu tinh", biến việc dàn trang từ một bài toán đố hóc búa thành trò chơi xếp hình đơn giản và trực quan.
CSS Grid Area là một thuộc tính trong CSS Grid cho phép bạn đặt tên cho các vùng trên giao diện và sắp xếp chúng bằng một "bản đồ" dạng chữ cực kỳ dễ hiểu.
Đặt tên cho từng "phòng" trong ngôi nhà layout
Hãy tưởng tượng trang web của bạn là một căn hộ. Thay vì phải mô tả: "Cái tủ lạnh nằm cách tường trái 2 mét, cách cửa sổ 1 mét", bạn chỉ cần đặt tên cho khu vực đó là 'bếp'. grid-template-areas cho phép bạn làm điều tương tự với code. Bạn đặt tên cho các khu vực như 'header', 'sidebar', 'main', 'footer' và sau đó chỉ việc liệt kê chúng trong một cái khung tổng thể.

Code của bạn sẽ trông trực quan như thế này:
.container {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}Nhìn vào đoạn mã trên, ngay cả người không biết code cũng có thể hình dung ra Header nằm trên cùng, Sidebar và Main nằm giữa, còn Footer ở dưới đáy. Cách tiếp cận này cực kỳ hiệu quả khi bạn muốn xây dựng các giao diện phức tạp như Cách Bento Grid giúp bạn sắp xếp UI gọn gàng mà không muốn đau đầu vì phân cấp thẻ div quá sâu.
Nhưng sức mạnh thực sự của nó chỉ bùng nổ khi bạn bắt đầu làm Responsive (tương thích màn hình), liệu bạn có đoán được không?
Thay đổi layout "trong một nốt nhạc" mà không chạm vào HTML
Đây mới chính là "ma thuật" khiến các lập trình viên Frontend mê mẩn. Thông thường, để đổi chỗ Sidebar từ trái sang phải trên điện thoại, bạn có thể phải dùng Flexbox order hoặc tệ hơn là đổi cấu trúc HTML. Với CSS Grid Area, bạn chỉ cần thay đổi lại cái "bản đồ chữ" trong Media Queries là xong.
Ví dụ, trên Mobile bạn muốn mọi thứ xếp chồng lên nhau thành một cột duy nhất? Quá đơn giản:
@media (max-width: 600px) {
.container {
grid-template-areas:
"header"
"main"
"sidebar"
"footer";
}
}Việc này giúp file CSS của bạn sạch sẽ, dễ bảo trì và cực kỳ linh hoạt. Bạn sẽ không bao giờ còn phải lo lắng về việc vỡ layout mỗi khi khách hàng đòi thay đổi vị trí các khối nội dung. Nếu bạn muốn chuyên sâu hơn về việc xử lý giao diện thích ứng thông minh, hãy xem thêm Cách Container Queries cứu rỗi giao diện để nâng tầm kỹ năng của mình.
Vậy làm sao để áp dụng nó vào dự án thực tế mà không bị "ngợp" trước hàng tá thuộc tính Grid?
Mẹo "vẽ" layout chuyên nghiệp cho dân thiết kế và lập trình
Đừng cố gắng biến mọi thứ thành Grid Area ngay lập tức. Hãy bắt đầu với khung sườn lớn của trang web (Macro-layout). Một mẹo nhỏ từ các chuyên gia là hãy sử dụng dấu chấm . để tạo ra những khoảng trống (empty cells) trong lưới mà không cần phải tạo thêm các thẻ div vô nghĩa chỉ để giữ chỗ.
Mẹo: Hãy luôn đặt tên vùng (area) trùng với tên class của component. Ví dụ: vùng 'nav' cho class .navigation-bar. Điều này giúp bạn và đồng đội ánh xạ (map) giao diện trong đầu nhanh hơn gấp 2 lần khi đọc code.
Đừng quên tham khảo tài liệu chuẩn tại MDN Web Docs để nắm vững các quy tắc đặt tên hợp lệ và các kỹ thuật nâng cao như đặt tên đường lưới (grid lines) nhé. Truy cập ngay uxui.edu.vn để cập nhật thêm nhiều kỹ thuật Frontend thực chiến khác.
Khi đã làm chủ được cách "vẽ" layout này, bạn sẽ thấy việc code Frontend không còn là cực hình mà giống như đang chơi Lego vậy. Nhưng liệu Grid Area có phải là "viên đạn bạc" cho mọi bài toán dàn trang, hay vẫn còn những giới hạn về hiệu năng mà bạn cần phải dè chừng?




Vui lòng đăng nhập để bình luận.