Cái thời float "hack" layout đã qua rồi
Nếu bạn bắt đầu học CSS từ 2-3 năm trước, chắc chắn bạn từng gặp float: left rồi clearfix rồi đủ thứ hack để căn 2 cột ngang nhau. Nghe quen không?
Tin vui là — bạn không cần float cho layout nữa. Flexbox và Grid đã thay thế hoàn toàn, và trình duyệt hỗ trợ từ lâu rồi.
Vậy tại sao vẫn có người dùng float? Và chuyển sang Flexbox/Grid thực sự dễ đến mức nào?

Flexbox — Giải quyết 90% bài toán layout
Flexbox sinh ra để xếp phần tử theo 1 chiều — ngang hoặc dọc. Chỉ cần 3 dòng CSS là bạn có layout mà ngày xưa phải hack cả buổi:
.container {
display: flex;
justify-content: space-between;
align-items: center;
}Xong. Không cần float, không cần clearfix, không cần overflow: hidden. Các phần tử tự căn đều, tự responsive.
Mẹo hay: Dùng gap thay vì margin để tạo khoảng cách giữa các phần tử trong flex container. Code sạch hơn nhiều.
Nhưng nếu bạn cần layout 2 chiều thì sao?
CSS Grid — Khi Flexbox không đủ
Grid dành cho layout 2 chiều — cả hàng và cột cùng lúc. Ví dụ: dashboard có sidebar, header, content, footer:
.layout {
display: grid;
grid-template-columns: 250px 1fr;
grid-template-rows: 60px 1fr 40px;
gap: 1rem;
}So với float, bạn tiết kiệm được 50-70% số dòng CSS và code dễ đọc hơn gấp bội. Người mới nhìn vào hiểu ngay cấu trúc trang.
Vậy khi nào dùng Flexbox, khi nào dùng Grid?
Chọn đúng công cụ cho đúng việc
| Tình huống | Dùng | Ví dụ |
|---|---|---|
| Xếp phần tử theo 1 hàng | Flexbox | Navbar, button group, card row |
| Layout tổng thể trang | Grid | Dashboard, blog layout, gallery |
| Căn giữa 1 phần tử | Flexbox | display:flex; place-items:center |
| Layout phức tạp nhiều vùng | Grid | Magazine layout, bento grid |
Thực tế thì bạn sẽ dùng cả hai — Grid cho layout tổng thể, Flexbox cho từng component bên trong. Không có cuộc chiến nào ở đây cả.
Theo Can I Use, Flexbox được hỗ trợ 98.8% trình duyệt, Grid được 97.5%. Không còn lý do nào để dùng float cho layout nữa.
Từ float sang Flex/Grid trong 5 phút
Nếu project cũ đang dùng float, đây là cách chuyển nhanh nhất:
- Tìm tất cả
.clearfixvàfloat: left/righttrong code - Thay parent container bằng
display: flexhoặcdisplay: grid - Xóa
clearfix,overflow: hidden,width: 33.33%hack - Dùng
gapthay margin giữa các phần tử
Bạn muốn đi sâu hơn? Bài này giải thích cách tư duy layout từ góc nhìn designer — rất hữu ích nếu bạn muốn hiểu tại sao Grid lại hợp với design system.
Trong bài tiếp theo, mình sẽ hướng dẫn cách dùng CSS Grid để tạo responsive layout không cần media query — nghe điên nhưng hoàn toàn được. Đón đọc nhé!



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