Trong CSS, mọi thứ đều có kích thước: font chữ, chiều rộng, khoảng cách, khung, v.v.
Để kiểm soát chúng chính xác và linh hoạt, bạn cần hiểu rõ đơn vị đo – và chọn đúng đơn vị sẽ giúp giao diện:
- Dễ co giãn, responsive tốt
- Giữ tỷ lệ chuẩn, không bị “vỡ layout”
- Tối ưu cho nhiều loại thiết bị, độ phân giải
1. Các loại đơn vị trong CSS
Chia làm 2 nhóm:
Nhóm | Ví dụ |
---|---|
Đơn vị tuyệt đối | px , pt , cm |
Đơn vị tương đối | % , em , rem , vw , vh |
2. px – đơn vị cố định (pixel)
h1 {
font-size: 24px;
}
- 1 pixel = 1 điểm ảnh (tùy thiết bị)
- Không thay đổi theo kích thước màn hình
- Dễ dùng, nhưng thiếu linh hoạt khi responsive
3. % – phần trăm của phần tử cha
.container {
width: 80%;
}
- Phụ thuộc vào kích thước phần tử chứa nó
- Thường dùng để làm layout co giãn
- Cũng có thể dùng cho
padding
,margin
,height
…
4. em – theo kích thước font của phần tử cha
p {
font-size: 1.2em; /* = 1.2 * font-size của cha */
}
- 1em = 100% cỡ chữ của cha
- Nếu cha là
16px
, thì1.5em = 24px
- Dùng cho font-size, padding, margin…
Lưu ý: Có thể bị “nhân lũy tiến” nếu lồng nhiều lớp.
5. rem – theo kích thước font của html
(gốc)
html {
font-size: 16px;
}
h2 {
font-size: 2rem; /* = 32px */
}
rem
= root em (font-size của thẻhtml
)- Ổn định hơn em, ít bị ảnh hưởng bởi cha
- Rất phổ biến trong thiết kế hiện đại
6. vw, vh – theo kích thước khung nhìn
Đơn vị | Ý nghĩa |
---|---|
1vw | 1% chiều rộng của màn hình |
1vh | 1% chiều cao của màn hình |
Ví dụ:
.hero {
height: 100vh; /* Chiếm toàn màn hình */
width: 100vw;
}
Rất hữu ích cho layout toàn trang, hero banner, v.v.
7. clamp – kết hợp nhiều đơn vị
h1 {
font-size: clamp(18px, 5vw, 32px);
}
- Kích thước co giãn theo khung nhìn (
vw
) - Nhưng giới hạn min – max để không quá to hay quá nhỏ
- Rất mạnh cho responsive typography
8. So sánh nhanh
Đơn vị | Ưu điểm | Nhược điểm |
---|---|---|
px | Dễ kiểm soát, chính xác | Không responsive |
% | Co giãn theo cha | Phức tạp nếu cha không cố định |
em | Linh hoạt, phù hợp cho padding | Dễ gây lồng hiệu ứng không mong |
rem | Ổn định, dễ predict | Phải thiết lập html {font-size} |
vw/vh | Tốt cho layout toàn trang | Phức tạp khi dùng với header/footer |
Gợi ý sử dụng đơn vị
Trường hợp | Đơn vị nên dùng |
---|---|
Font chữ toàn trang | rem , clamp |
Khoảng cách trong phần tử | em , rem |
Layout co giãn theo màn hình | % , vw , vh |
Header toàn màn hình | 100vh |
Padding/margin theo tỷ lệ chữ | em |
Thảo luận