1. Sử dụng float
(cách truyền thống)
.row {
overflow: hidden; /* clear float */
}
.col {
float: left;
width: 33.33%; /* 3 cột */
padding: 10px;
}
👉 Cách này thường dùng trong Bootstrap 3 và các framework cũ, nhưng ngày nay ít sử dụng do hạn chế trong responsive.
2. Sử dụng inline-block
.row {
font-size: 0; /* fix khoảng trắng */
}
.col {
display: inline-block;
width: 33.33%;
padding: 10px;
font-size: 16px;
}
👉 Tránh lỗi float, nhưng phải xử lý khoảng trắng khi dùng inline-block
.
3. Sử dụng Flexbox (phổ biến nhất hiện nay)
.row {
display: flex;
flex-wrap: wrap;
gap: 1rem; /* khoảng cách giữa các cột */
}
.col {
flex: 1; /* chia đều */
min-width: 200px; /* giới hạn nhỏ nhất */
}
👉 Ưu điểm: Dễ dùng, responsive tốt, code gọn.
4. Sử dụng CSS Grid (hiện đại & mạnh mẽ nhất)
.row {
display: grid;
grid-template-columns: repeat(3, 1fr); /* 3 cột */
gap: 1rem;
}
.col {
background: #eee;
padding: 10px;
}
👉 Grid mạnh hơn Flexbox khi làm layout phức tạp (nhiều hàng, nhiều cột).
5. Sử dụng Multi-column Layout (column-count
)
.row {
column-count: 3; /* số cột */
column-gap: 1rem; /* khoảng cách */
}
.col {
break-inside: avoid; /* tránh bị cắt nội dung */
}
👉 Thường dùng cho bài viết, tạp chí, blog (giống newspaper layout).
6. Sử dụng CSS Variables với Flexbox
.row {
display: flex;
flex-wrap: wrap;
margin-left: calc(-1 * var(--gutter));
--columns: 3;
--gutter: 2rem;
.col {
width: calc((100% / var(--columns)) - var(--gutter));
margin-left: var(--gutter);
margin-bottom: var(--gutter);
}
}
👉 Ưu điểm: tùy biến số cột và gutter bằng biến CSS, dễ maintain.
7. Sử dụng Frameworks (Bootstrap, Tailwind CSS)
- Bootstrap:
<div class="row">
<div class="col-4">Cột 1</div>
<div class="col-4">Cột 2</div>
<div class="col-4">Cột 3</div>
</div>
- Tailwind:
<div class="grid grid-cols-3 gap-4">
<div class="bg-gray-200 p-4">Cột 1</div>
<div class="bg-gray-200 p-4">Cột 2</div>
<div class="bg-gray-200 p-4">Cột 3</div>
</div>
👉 Phù hợp nếu bạn dùng sẵn framework CSS.
Kết luận
-
Nếu làm layout cơ bản, responsive → dùng Flexbox.
-
Nếu làm layout nhiều hàng, phức tạp → dùng CSS Grid.
-
Nếu làm bài viết dạng báo/tạp chí → dùng Multi-column.
-
Nếu muốn nhanh chóng → dùng Bootstrap / Tailwind.
-
Nếu muốn tùy biến linh hoạt → dùng CSS Variables + Flexbox/Grid.
Phản hồi (0)