Trình tạo Flexbox CSS
Flexbox là lựa chọn hàng đầu cho layout một chiều: hàng card, navbar, hero căn giữa, form. Mô hình container-và-item mạnh mẽ, nhưng các thuộc tính của nó tương tác theo những cách khó thấy. Trình tạo này loại bỏ sự phỏng đoán khi cấu hình container: chọn flex-direction, justify-content, align-items, flex-wrap và gap, bạn nhận được một quy tắc CSS gọn gàng để sao chép thẳng vào stylesheet.
Cách tạo CSS
-
1
Chọn hướng
Chọn row, column hoặc các biến thể đảo ngược. Thao tác này đặt flex-direction, trục mà các item chạy dọc theo.
-
2
Đặt justify-content
Chọn cách item phân bố dọc theo trục chính: đầu, giữa, space-between, space-around hoặc cuối.
-
3
Đặt align-items
Chọn cách item căn chỉnh trên trục phụ: stretch, đầu, giữa hoặc cuối.
-
4
Đặt gap và wrap
Thêm khoảng cách giữa các item theo pixel và quyết định xem item có xuống dòng mới hay không.
-
5
Sao chép CSS
Trình tạo xuất ra quy tắc container với đầy đủ thuộc tính, sẵn sàng dán vào stylesheet của bạn.
Thuộc tính của container
| Thuộc tính | Giá trị | Hiệu ứng |
|---|---|---|
flex-direction |
row / column / row-reverse / column-reverse | Trục chính |
flex-wrap |
nowrap / wrap / wrap-reverse | Item có wrap hay không |
justify-content |
flex-start / center / flex-end / space-between / space-around / space-evenly | Phân bố trục chính |
align-items |
flex-start / center / flex-end / baseline / stretch | Căn trục phụ cho mỗi dòng |
align-content |
cùng giá trị + space-between / space-around | Khi wrap, phân bố trục phụ của các dòng |
gap (row-gap, column-gap) |
độ dài | Khoảng cách giữa các item |
Thuộc tính của item
| Thuộc tính | Giá trị | Hiệu ứng |
|---|---|---|
flex-grow |
0+ (không đơn vị) | Phần không gian thừa được hấp thụ |
flex-shrink |
0+ (không đơn vị) | Phần khi tràn để co lại |
flex-basis |
độ dài hoặc auto | Kích thước khởi điểm trước khi grow/shrink |
flex |
shorthand (1 1 auto, v.v.) |
Cả ba cùng lúc |
align-self |
auto / flex-start / center / flex-end / baseline / stretch | Ghi đè align-items cho một item |
order |
số nguyên | Sắp xếp lại thị giác không đổi DOM |
Mẹo flex: 1
flex: 1 là shorthand cho flex: 1 1 0%. Nó làm cho item:
- Grow để lấp đầy không gian (grow: 1)
- Shrink nếu cần (shrink: 1)
- Bắt đầu từ kích thước không (basis: 0%)
Cho các cột bằng nhau, flex: 1 trên mỗi item cho chia đều hoàn hảo. Cho sidebar không được co dưới content, dùng flex: 0 0 240px (không grow, không shrink, basis 240px).
Các mẫu phổ biến
Hero căn giữa
.hero {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
Navbar với logo trái, link phải
.nav {
display: flex;
align-items: center;
gap: 2rem;
}
.nav-links {
margin-left: auto; /* đẩy sang phải */
display: flex;
gap: 1rem;
}
Hàng card responsive
.card-row {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
}
.card {
flex: 1 1 260px; /* grow/shrink, tối thiểu 260px trước khi wrap */
}
Trường form có nút (input linh hoạt, nút cố định)
.field {
display: flex;
gap: 0.5rem;
}
.field input {
flex: 1;
}
.field button {
flex: 0 0 auto;
}
Flexbox so với Grid
- Flexbox: một chiều (row HOẶC column). Tốt nhất khi kích thước item theo nội dung hoặc khi bạn phân bố không gian theo một dòng đơn.
- Grid: hai chiều (rows VÀ columns với track rõ ràng). Tốt nhất khi layout có cấu trúc hàng và cột đồng thời.
Cho navbar hoặc một chồng card: Flexbox. Cho lưới product-card với nhiều hàng card căn chỉnh: CSS Grid. Nhiều trang thực dùng cả hai, layout trang bằng Grid với Flexbox bên trong component.
Các bẫy phổ biến
- Item không lấp đầy container: mặc định
align-items: stretchchỉ áp dụng nếu item không có chiều cao cố định. Với chiều cao rõ ràng, chúng giữ nguyên kích thước đó. gapkhông hoạt động: kiểm tra hỗ trợ trình duyệt. Flex gap đến muộn; Safari <14.1 không hỗ trợ. Giờ phổ quát từ 2024+.- Con của flex column bị thu lại: flex column mặc định có
align-items: stretch, kéo item đến chiều rộng container. Nếu một con đặt width, nó tách ra. orderchỉ là thị giác: screen reader và điều hướng bàn phím theo thứ tự DOM. Đừng dùngorderđể làm nội dung có nghĩa; dùng nó chỉ cho hoàn thiện thị giác.
Câu hỏi thường gặp
Grid cho layout trang hai chiều (hàng và cột cùng nhau). Flexbox cho phân bố một chiều (navbar, hàng nút, chồng). Bên trong một ô Grid, dùng Flexbox cho layout nội bộ. Hầu hết UI phức tạp dùng cả hai.
Vì mặc định flex-shrink là 1 nhưng mặc định min-width là auto, bằng chiều rộng nội dung. Đặt min-width: 0 (hoặc min-inline-size: 0) trên item để cho phép co dưới kích thước nội tại.
display: flex; justify-content: center; align-items: center; trên container. Phủ phần lớn các trường hợp “căn giữa cái này” chỉ với hai dòng.
Có, trên mọi trình duyệt hiện đại. Safari đến muộn (thêm ở 14.1, tháng 4/2021); hôm nay mọi trình duyệt chính hỗ trợ. Thay khoảng cách dựa trên margin bằng gap bất cứ khi nào có thể, đơn giản hơn nhiều.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bộ chuyển đổi Base64 sang Hex
Chuyển chuỗi Base64 chuẩn thành các byte nền tảng được viết dưới dạng hexadecimal liên tục in hoa. Giải mã nghiêm ngặt, lý tưởng cho token, khóa và chữ ký JWT.
Trình tạo bảng màu ngẫu nhiên
Tạo bảng màu ngẫu nhiên từ 2 đến 15 mẫu màu, chọn phong cách rực rỡ, pastel, dịu hoặc tối, rồi sao chép mã HEX hoặc biến CSS.
Trình xem hex của tệp nhị phân
Chọn một tệp và kiểm tra phần dữ liệu giới hạn từ bất kỳ offset byte hợp lệ nào dưới dạng hex dump cục bộ với cột offset, hex và ASCII.
Bộ chọn màu HEX
Chọn hoặc nhập màu HEX để xem RGB, HSL, CMYK ước tính, độ chói tương đối và tương phản với trắng và đen.