Cách đặt cỡ chữ trong CSS
Thuộc tính font-size quy định kích thước của chữ. Đặt nó cho bất kỳ phần tử nào, mọi phần chữ bên trong sẽ kế thừa kích thước đó, trừ khi một phần tử con tự đặt cỡ riêng.
Để đổi cỡ chữ trong HTML, bạn vẫn dùng CSS. Thêm thuộc tính style (<p style="font-size: 20px;">) hoặc một quy tắc trong stylesheet. Thẻ <font size="5"> từ những năm 1990 đã lỗi thời và không có chỗ trong một trang web hiện đại.
Các đơn vị font-size nhận
| Giá trị | Ví dụ | Tính theo |
|---|---|---|
px | 16px | Không theo gì cả: kích thước cố định |
rem | 1.25rem | Cỡ chữ của phần tử gốc <html> (mặc định 16px) |
em | 1.2em | Cỡ chữ của phần tử cha |
% | 120% | Cỡ chữ của phần tử cha, giống em (120% là 1.2em) |
| Từ khóa | large | Một thang có sẵn xoay quanh giá trị mặc định medium |
| Từ khóa tương đối | smaller, larger | Một bậc so với cỡ chữ của phần tử cha |
| Viewport | 4vw | Chiều rộng viewport (4% của nó) |
| Hàm | clamp(1rem, 4vw, 2rem) | Co giãn giữa một giá trị tối thiểu và tối đa |
Nhập một giá trị và xem kích thước trình duyệt tính ra:
Thử 20px, 2em, 150%, x-large, smaller và 5vw. Một giá trị không hợp lệ, như big, sẽ bị bỏ qua và chữ giữ kích thước hợp lệ gần nhất.
rem và em: khác biệt dễ gây lỗi
rem luôn nhìn vào phần tử gốc, nên 1.2rem có cùng kích thước ở bất kỳ đâu. em nhìn vào phần tử cha, nên kích thước bị nhân lên khi các phần tử lồng nhau:
Hộp em trong cùng có cỡ 16 × 1,2 × 1,2 × 1,2 = 27,648px. Hộp rem trong cùng vẫn là 19,2px. Việc nhân dồn này hữu ích cho một component mà các phần cần co giãn cùng nhau, và gây bất ngờ ở mọi chỗ khác. Trang đơn vị so sánh mọi đơn vị độ dài.
Từ khóa: từ xx-small đến xx-large
Các từ khóa tuyệt đối ứng với một thang cố định quanh medium, bằng cỡ chữ mặc định của người dùng (16px nếu họ chưa đổi):
Với mặc định 16px, small là 13px, large là 18px, x-large là 24px và xx-large là 32px. Từ khóa dùng nhanh thì được, nhưng một design system thường muốn có thang riêng bằng rem.
Cỡ chữ co giãn với clamp()
Một tiêu đề cần to lên theo màn hình nhưng không bao giờ quá nhỏ hay quá to chỉ cần một lần gọi clamp(): giá trị tối thiểu, một kích thước ưu tiên có co giãn, và giá trị tối đa.
Trong khung xem trước rộng 800px, 5vw là 40px, nằm giữa 24px và 48px, nên giá trị này được dùng. Trang clamp trình bày chi tiết về chữ co giãn.
Đặt cỡ chữ gốc cho cả trang
Đặt cỡ chữ một lần trên body (hoặc html) và đặt mọi thứ khác theo tỷ lệ với nó:
html { font-size: 100%; } /* respects the user's setting, usually 16px */
body { font-size: 1rem; }
h1 { font-size: 2.25rem; }
small, .caption { font-size: 0.875rem; }
Tránh mẹo html { font-size: 62.5%; } trừ khi mọi kích thước trên trang sau đó đều đặt bằng rem, và đừng bao giờ đặt cỡ px cố định trên html: nó ghi đè cỡ chữ mà người đọc đã chọn trong trình duyệt, điều mà một số người cần đến mới đọc được.
Lưu ý về khả năng tiếp cận
- Chữ thân trang từ 16px trở lên là mức sàn tốt để đọc trên màn hình.
- Kích thước bằng
remvàemđi theo cài đặt cỡ chữ mặc định của người dùng. Kích thước bằngpxđi theo mức thu phóng trang nhưng không theo cài đặt đó. - Trên iPhone, Safari phóng to trang khi bạn chạm vào ô nhập có cỡ chữ dưới 16px. Đặt
font-size: 1remtrở lên cho các trường form để tránh việc này.
Lỗi thường gặp
- Dùng thẻ
<font>. Thẻ này đã lỗi thời. Dùng thuộc tínhfont-size. - Cỡ
emlồng nhau to hoặc nhỏ đi mất kiểm soát. Dùngremtrừ khi bạn muốn nhân dồn. - Cỡ
pxcố định trênhtml. Nó ghi đè cài đặt cỡ chữ riêng của người đọc. - Quên rằng tiêu đề đã có sẵn kích thước.
<h1>mặc định là2em, nên cầnh1 { font-size: 1em; }nếu bạn muốn nó bằng cỡ chữ thân trang. - Chỉ dùng đơn vị viewport.
font-size: 3vwsẽ khó đọc trên điện thoại và quá to trên màn hình rộng. Hãy bọc nó trongclamp().
Câu hỏi thường gặp
Làm sao đổi cỡ chữ trong CSS?
Đặt thuộc tính font-size cho phần tử: p { font-size: 18px; }. Thuộc tính này nhận độ dài (px, rem, em), phần trăm và từ khóa như large.
Làm sao đổi cỡ chữ trong HTML?
Bằng CSS, trong stylesheet hoặc trong thuộc tính style: <p style="font-size: 20px;">. Thẻ <font size="5"> cũ đã lỗi thời trong HTML5 và không nên dùng nữa.
Cỡ chữ mặc định của trình duyệt là bao nhiêu?
16px cho chữ trong thân trang, trừ khi người dùng đã đổi trong cài đặt trình duyệt. Mặc định, 1rem và từ khóa medium đều bằng giá trị này.
Nên dùng px, em hay rem cho cỡ chữ?
Dùng rem cho phần lớn chữ: nó co giãn theo cài đặt cỡ chữ trong trình duyệt của người dùng và không bị nhân dồn. Dùng em khi một kích thước cần đi theo phần tử cha, như biểu tượng trong nút. px không đi theo cỡ chữ mặc định mà người đọc đặt trong trình duyệt, nên tránh dùng nó cho chữ thân trang.
Vì sao cỡ chữ em cứ to dần lên?
Vì em tính theo cỡ chữ của phần tử cha, nên các phần tử lồng nhau sẽ nhân dồn: 1.2em bên trong 1.2em bằng 1,44 lần cỡ gốc. Chuyển sang rem, đơn vị luôn tính theo phần tử gốc.