Bố cục macro

Bố cục vĩ mô mô tả tổ chức lớn hơn, trên toàn trang của giao diện.

Khung hình của bố cục hai cột, bên cạnh bố cục tương tự dưới dạng một cột cho chế độ xem hẹp.

Trước khi áp dụng bất kỳ bố cục nào, bạn nên đảm bảo rằng luồng nội dung của bạn có ý nghĩa. Đây là thứ tự mặc định của một cột mà các màn hình nhỏ sẽ nhận được.

<body>
  <header>…</header>
  <main>
    <article>…</article>
    <aside>…</aside>
  </main>
  <footer>…</footer>
</body>

Khi sắp xếp các thành phần riêng lẻ ở cấp trang này, bạn đang thiết kế một bố cục vĩ mô: chế độ xem cấp cao của trang. Bằng cách sử dụng truy vấn phương tiện, bạn có thể cung cấp các quy tắc trong CSS mô tả cách khung hiển thị này sẽ điều chỉnh theo nhiều kích thước màn hình.

Lưới

Lưới CSS là một công cụ tuyệt vời để áp dụng bố cục cho trang của bạn. Trong ví dụ trước, giả sử bạn muốn có bố cục hai cột khi có đủ chiều rộng màn hình. Để áp dụng bố cục hai cột này khi trình duyệt đủ rộng, hãy sử dụng một truy vấn nội dung nghe nhìn để xác định các kiểu lưới ở trên một điểm ngắt cụ thể.

@media (min-width: 45em) {
  main {
    display: grid;
    grid-template-columns: 2fr 1fr;
  }
}

Flexbox

Đối với bố cục cụ thể này, bạn cũng có thể sử dụng flexbox. Các kiểu sẽ có dạng như sau:

@media (min-width: 45em) {
  main {
    display: flex;
    flex-direction: row;
  }

  main article {
    flex: 2;
  }

  main aside {
    flex: 1;
  }
}

Tuy nhiên, phiên bản flexbox cần nhiều CSS hơn. Mỗi cột có một quy tắc riêng để mô tả lượng không gian mà cột đó sẽ chiếm. Trong ví dụ về lưới, thông tin đó được đóng gói trong một quy tắc cho phần tử chứa.

Bạn có cần truy vấn về nội dung nghe nhìn không?

Không phải lúc nào bạn cũng cần sử dụng truy vấn nội dung nghe nhìn. Truy vấn nội dung nghe nhìn hoạt động tốt khi bạn áp dụng các thay đổi cho một số phần tử, nhưng nếu bố cục cần được cập nhật nhiều, thì truy vấn nội dung nghe nhìn có thể trở nên khó quản lý với nhiều điểm ngắt.

Giả sử bạn có một trang chứa đầy các thành phần thẻ. Các thẻ không bao giờ rộng hơn 15em và bạn muốn đặt nhiều thẻ nhất có thể trên một dòng. Bạn có thể viết các truy vấn nội dung nghe nhìn với các điểm ngắt như 30em, 45em60em nhưng việc này khá tẻ nhạt và khó duy trì.

Thay vào đó, bạn có thể áp dụng các quy tắc để bản thân thẻ tự động chiếm lượng không gian phù hợp.

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(15em, 1fr));
  grid-gap: 1em;
}

Bạn có thể đạt được bố cục tương tự bằng flexbox. Trong trường hợp này, nếu không có đủ thẻ để lấp đầy hàng cuối cùng, các thẻ còn lại sẽ kéo giãn để lấp đầy khoảng trống thay vì xếp thành cột. Nếu bạn muốn căn chỉnh các hàng và cột, hãy sử dụng lưới.

.cards {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 1em;
}
.cards .card {
  flex-basis: 15em;
  flex-grow: 1;
}

Bằng cách áp dụng một số quy tắc thông minh trong flexbox hoặc lưới, bạn có thể thiết kế bố cục macro động với CSS tối thiểu và không có truy vấn phương tiện nào. Điều này giúp bạn giảm bớt công việc vì bạn đang yêu cầu trình duyệt thực hiện các phép tính. Để xem một số ví dụ về bố cục CSS hiện đại có tính linh hoạt mà không cần truy vấn phương tiện, hãy xem 1linelayouts.com.

Kiểm tra kiến thức của bạn

Kiểm tra kiến thức của bạn về bố cục vĩ mô.

Câu nào mô tả đúng nhất về bố cục vĩ mô?

Bố cục chứa các bố cục khác.
Hãy thử lại! Hầu hết các bố cục đều chứa các bố cục khác.
Khi một thiết kế sử dụng flexbox hoặc lưới.
Hãy thử lại! Cả flexbox và lưới đều không có gì cụ thể cho bố cục vĩ mô.
Bố cục cấp thấp bao phủ một phần nhỏ màn hình.
Hãy thử lại!
Bố cục cấp cao bao phủ phần lớn màn hình.
🎉 Bố cục macro là bố cục cơ bản cho một trang, trải rộng trên một lượng lớn diện tích trực quan và thường được điều chỉnh bằng các truy vấn về kích thước trang.

Bố cục macro luôn sử dụng truy vấn nội dung nghe nhìn để thích ứng với nhiều kích thước màn hình?

Đúng
Hãy thử lại! Bố cục macro không được xác định bằng cách sử dụng các truy vấn nội dung nghe nhìn.
Sai
🎉 Bố cục macro có thể điều chỉnh để phù hợp với nội dung, lấp đầy khoảng trống có sẵn và nhiều nội dung khác mà không cần truy vấn nội dung nghe nhìn.

Giờ đây, khi bạn đã có một số ý tưởng về bố cục macro ở cấp trang, hãy chuyển sự chú ý sang các thành phần trong trang. Đây là phạm vi của bố cục vi mô.