Cách in đậm chữ bằng CSS
font-weight quy định nét chữ dày hay mỏng. bold (tương đương 700) làm chữ đậm, còn normal (tương đương 400) là chữ thường.
Tiêu đề, <th>, <b> và <strong> mặc định in đậm do stylesheet riêng của trình duyệt, nên font-weight: normal là cách bỏ in đậm. Để biết khi nào dùng <b> hay <strong> ngay trong HTML, xem in đậm trong HTML.
Thang số: từ 100 đến 900
Các con số có tên chuẩn mà các họ font tuân theo:
| Giá trị | Tên thường gọi |
|---|---|
100 | Thin |
200 | Extra Light |
300 | Light |
400 | Normal (Regular) |
500 | Medium |
600 | Semi Bold |
700 | Bold |
800 | Extra Bold |
900 | Black (Heavy) |
Mọi số từ 1 đến 1000 đều hợp lệ, nên 450 và 650 cũng được. Bạn có thấy khác biệt hay không tùy vào font: trình duyệt chỉ vẽ được những độ đậm mà font thực sự có.
system-ui là font giao diện của hệ điều hành, thường có nhiều độ đậm. Nếu mọi dòng ở trên trông như chỉ có hai mức, font hệ thống của bạn chỉ có chữ thường và chữ đậm.
Vì sao đổi độ đậm mà không thấy thay đổi
Một font là một bộ tệp, thường mỗi độ đậm một tệp. Khi thiếu đúng độ đậm cần dùng, trình duyệt chọn độ đậm gần nhất mà nó có:
- Với
500, nó thử 500, rồi các mức mảnh hơn, rồi các mức đậm hơn. - Với
600trở lên, nó thử các mức đậm hơn trước, rồi mới đến các mức mảnh hơn. - Nếu hoàn toàn không có tệp chữ đậm, phần lớn trình duyệt sẽ giả lập bằng cách làm dày nét chữ thường (synthetic bold).
So sánh một font có nhiều độ đậm với serif, font mà trên phần lớn hệ thống chỉ có chữ thường và chữ đậm:
Ở cột serif, 300 và 500 thường rơi về kiểu chữ thường còn 600 rơi về kiểu chữ đậm. Đó là câu trả lời cho phần lớn thắc mắc "font-weight không hoạt động": CSS không sai, chỉ là font thiếu độ đậm đó. Một variable font (một tệp duy nhất có trục độ đậm) vẽ mượt mọi giá trị trong khoảng độ đậm của nó.
bolder và lighter
bolder và lighter tính theo độ đậm mà phần tử kế thừa. Chúng nhảy sang nhóm độ đậm kế tiếp thay vì cộng thêm một lượng cố định:
| Độ đậm của phần tử cha | bolder cho ra | lighter cho ra |
|---|---|---|
| 100 đến 349 | 400 | 100 |
| 350 đến 549 | 700 | 100 |
| 550 đến 749 | 900 | 400 |
| 750 đến 900 | 900 | 700 |
Mẫu thực tế: thang độ đậm bằng biến
Chọn ba hoặc bốn độ đậm cho toàn bộ trang web và đặt tên cho chúng, thay vì rải các con số khắp nơi:
:root {
--weight-regular: 400;
--weight-medium: 500;
--weight-bold: 700;
}
body { font-weight: var(--weight-regular); }
button { font-weight: var(--weight-medium); }
h1, h2 { font-weight: var(--weight-bold); }
Lỗi thường gặp
- Mong mọi con số đều trông khác nhau. Chỉ những độ đậm có trong font mới hiển thị khác biệt.
- Dùng
<b>cho nhãn nút. Định dạng nút bằngfont-weight; để dành<b>và<strong>cho văn bản. - Đặt con số trong dấu nháy.
font-weight: "700"không hợp lệ và bị bỏ qua. Viếtfont-weight: 700. - In đậm để nhấn mạnh ở khắp nơi. Khi mọi thứ đều đậm, không có gì nổi bật. Giữ chữ thân trang ở 400.
- Dùng độ đậm mảnh cho chữ nhỏ. Từ 100 đến 300 ở cỡ nhỏ rất khó đọc, nhất là trên nền có độ tương phản thấp.
Câu hỏi thường gặp
Làm sao in đậm chữ bằng CSS?
Dùng font-weight: bold; hoặc con số tương đương font-weight: 700; cho phần tử. Để bỏ in đậm khỏi một tiêu đề hay thẻ <strong>, đặt font-weight: normal; (400).
font-weight có những giá trị nào?
Các số từ 1 đến 1000, thường viết theo hàng trăm: 100 thin, 200 extra light, 300 light, 400 normal, 500 medium, 600 semibold, 700 bold, 800 extra bold, 900 black. Từ khóa normal và bold là 400 và 700, còn bolder và lighter tính theo phần tử cha.
font-weight bold có giống 700 không?
Có. bold được tính thành 700 và normal được tính thành 400, nên hai cách viết hiển thị giống hệt nhau.
Vì sao font-weight 500 hoặc 600 trông giống normal hoặc bold?
Vì font không có độ đậm đó. Khi một font chỉ có 400 và 700, trình duyệt chọn tệp gần nhất có sẵn, nên 500 hiển thị như 400 và 600 như 700. Hãy tải font có nhiều độ đậm hơn hoặc một variable font.
Nên dùng font-weight trong CSS hay thẻ <b>?
Dùng <strong> khi nội dung quan trọng, <b> cho chữ chỉ cần trình bày khác đi, và font-weight cho thiết kế giao diện như nút, nhãn và tiêu đề. Các thẻ mang ý nghĩa; thuộc tính chỉ là vẻ ngoài.