Bạn muốn kiểm soát chính xác cách các dòng nội dung được căn chỉnh trong một vùng chứa Flexbox hoặc Grid? Thuộc tính
align-content
trong CSS sẽ giúp bạn đạt được điều đó. Nó cho phép bạn phân phối không gian thừa theo chiều dọc giữa các dòng, tạo ra các bố cục hấp dẫn và đáp ứng.
Giới thiệu về
align-content
trong CSS
Thuộc tính
align-content
là một phần quan trọng của Flexbox và Grid Layout. Nó kiểm soát cách các dòng hoặc cột được căn chỉnh dọc trong một vùng chứa. Nó chỉ có tác dụng khi có nhiều dòng nội dung hoặc khi không gian thừa theo chiều dọc có sẵn.
Hãy tưởng tượng bạn có một hộp Flexbox với nhiều mục được bọc thành nhiều dòng.
align-content
quyết định cách các dòng này được phân bố trong hộp. Tương tự, trong Grid Layout, nó ảnh hưởng đến cách các dòng lưới được căn chỉnh.
Điều kiện tiên quyết để sử dụng
align-content
Để
align-content
hoạt động, bạn cần đáp ứng hai điều kiện:
-
Vùng chứa phải là một vùng chứa Flexbox (
display: flex
hoặcdisplay: inline-flex
) hoặc Grid (display: grid
hoặcdisplay: inline-grid
). - Phải có nhiều dòng nội dung (trong Flexbox) hoặc nhiều dòng lưới (trong Grid). Hoặc phải có không gian thừa theo chiều dọc trong vùng chứa.
Các giá trị phổ biến của
align-content
Thuộc tính
align-content
cung cấp nhiều giá trị để bạn lựa chọn, mỗi giá trị tạo ra một kiểu căn chỉnh khác nhau:
-
stretch
: (Giá trị mặc định) Các dòng được kéo dài để lấp đầy không gian còn lại. -
flex-start
: Các dòng được căn chỉnh về đầu của vùng chứa. -
flex-end
: Các dòng được căn chỉnh về cuối của vùng chứa. -
center
: Các dòng được căn chỉnh ở giữa vùng chứa. -
space-between
: Dòng đầu tiên được căn chỉnh về đầu, dòng cuối cùng được căn chỉnh về cuối. Các dòng còn lại được phân phối đều khoảng trắng giữa chúng. -
space-around
: Các dòng được phân phối đều khoảng trắng xung quanh mỗi dòng. -
space-evenly
: Các dòng được phân phối đều khoảng trắng giữa chúng và giữa dòng đầu/cuối với cạnh của vùng chứa.
Ví dụ minh họa với Flexbox
Hãy xem một ví dụ đơn giản về cách sử dụng
align-content
trong Flexbox:
<div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> <div class="item">5</div> </div> <style> .container { display: flex; flex-wrap: wrap; height: 200px; /* Đảm bảo có không gian thừa */ align-content: flex-start; /* Thay đổi giá trị để xem hiệu ứng */ } .item { width: 50px; height: 50px; background-color: lightblue; margin: 5px; } </style>
Trong ví dụ này, chúng ta tạo một vùng chứa Flexbox với 5 mục. Chúng ta đặt
flex-wrap: wrap
để các mục tự động xuống dòng khi không đủ không gian.
align-content
được đặt thành
flex-start
, vì vậy các dòng được căn chỉnh về đầu của vùng chứa. Bạn có thể thay đổi giá trị của
align-content
để xem các hiệu ứng khác nhau. Hãy xem thêm về
CSS
để hiểu rõ hơn.
Ví dụ minh họa với Grid Layout
Tương tự, bạn có thể sử dụng
align-content
trong Grid Layout:
<div class="container"> <div class="item">1</div> <div class="item">2</div> <div class="item">3</div> <div class="item">4</div> </div> <style> .container { display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 100px); /* Tạo nhiều dòng lưới */ height: 300px; /* Đảm bảo có không gian thừa */ align-content: center; /* Thay đổi giá trị để xem hiệu ứng */ } .item { background-color: lightgreen; border: 1px solid black; } </style>
Trong ví dụ này, chúng ta tạo một vùng chứa Grid với 4 mục. Chúng ta định nghĩa hai cột và hai dòng lưới.
align-content
được đặt thành
center
, vì vậy các dòng lưới được căn chỉnh ở giữa vùng chứa.
Khi nào nên sử dụng
align-content
?
align-content
đặc biệt hữu ích trong các tình huống sau:
- Khi bạn muốn kiểm soát cách các dòng nội dung được phân phối trong một vùng chứa Flexbox hoặc Grid.
- Khi bạn có không gian thừa theo chiều dọc trong vùng chứa và muốn tận dụng nó để tạo ra các bố cục hấp dẫn hơn.
- Khi bạn muốn tạo ra các bố cục đáp ứng, nơi các dòng nội dung có thể tự động điều chỉnh theo kích thước màn hình.
Sự khác biệt giữa
align-items
và
align-content
Nhiều người nhầm lẫn giữa
align-items
và
align-content
.
align-items
căn chỉnh các mục riêng lẻ *trong mỗi dòng*, trong khi
align-content
căn chỉnh *toàn bộ các dòng*. Nếu chỉ có một dòng nội dung,
align-content
sẽ không có tác dụng.
Khả năng tương thích của trình duyệt
Thuộc tính
align-content
được hỗ trợ rộng rãi bởi các trình duyệt hiện đại, bao gồm Chrome, Firefox, Safari, Edge và Opera. Tuy nhiên, bạn nên kiểm tra kỹ lưỡng để đảm bảo tương thích với các phiên bản trình duyệt cũ hơn.
align-content
có hoạt động với
display: block
không?
Không,
align-content
chỉ hoạt động với các vùng chứa Flexbox (
display: flex
hoặc
display: inline-flex
) và Grid (
display: grid
hoặc
display: inline-grid
).
Tôi nên sử dụng
align-content
hay
align-items
?
Sử dụng
align-items
để căn chỉnh các mục riêng lẻ trong một dòng. Sử dụng
align-content
để căn chỉnh toàn bộ các dòng trong vùng chứa.
Tại sao
align-content
không hoạt động?
Đảm bảo rằng vùng chứa của bạn là Flexbox hoặc Grid, có nhiều dòng nội dung hoặc không gian thừa theo chiều dọc, và bạn đang áp dụng
align-content
cho vùng chứa, không phải các mục bên trong.
Giá trị
stretch
của
align-content
hoạt động như thế nào?
Giá trị
stretch
kéo dài các dòng nội dung để lấp đầy không gian thừa theo chiều dọc trong vùng chứa. Nó là giá trị mặc định của
align-content
.
Làm thế nào để căn chỉnh các dòng nội dung ở dưới cùng của vùng chứa?
Sử dụng giá trị
flex-end
cho thuộc tính
align-content
để căn chỉnh các dòng nội dung ở dưới cùng của vùng chứa.
Kết luận
align-content
là một công cụ mạnh mẽ để kiểm soát bố cục dọc trong Flexbox và Grid. Bằng cách hiểu rõ các giá trị và cách sử dụng của nó, bạn có thể tạo ra các bố cục hấp dẫn và đáp ứng, nâng cao trải nghiệm người dùng trên trang web của mình.
Unlocking vertical alignment control with CSS align-content property in Flexbox and Grid.