Menu

Font size trong CSS: px, rem, em, từ khóa và ví dụ

Thuộc tính font-size quy định chữ to hay nhỏ. Tìm hiểu các đơn vị nó nhận (px, rem, em, %, từ khóa, vw), cách đổi cỡ chữ trong HTML, vì sao rem là lựa chọn mặc định an toàn và vì sao cỡ chữ em bị nhân dồn.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

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
px16pxKhông theo gì cả: kích thước cố định
rem1.25remCỡ chữ của phần tử gốc <html> (mặc định 16px)
em1.2emCỡ 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óalargeMột thang có sẵn xoay quanh giá trị mặc định medium
Từ khóa tương đốismaller, largerMột bậc so với cỡ chữ của phần tử cha
Viewport4vwChiều rộng viewport (4% của nó)
Hàmclamp(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 rem và em đi theo cài đặt cỡ chữ mặc định của người dùng. Kích thước bằng px đ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: 1rem trở 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ính font-size.
  • Cỡ em lồng nhau to hoặc nhỏ đi mất kiểm soát. Dùng rem trừ khi bạn muốn nhân dồn.
  • Cỡ px cố định trên html. 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ần h1 { 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: 3vw sẽ khó đọc trên điện thoại và quá to trên màn hình rộng. Hãy bọc nó trong clamp().

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.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu