Mối tình nào cho font-size: px | em | rem ?

1529

Người viết: Le Thi Hao

Đặt vấn đề

Chả là ở vương quốc Frontend, có nàng công chúa là font-size. Đã tới tuổi lên file lấy chồng nên nhà vua quyết định kén rể.
Qua báo cáo thống kê của vệ thần CSS thì sau vòng loại CV, 3 ứng cử viên sáng giá là hoàng tử của nước RemsEm và Pixel. Bối rối không biết chọn ai, Quốc vương quyết định tìm hiểu nguồn gốc của 3 hoàng tử để tìm được người xứng đáng

Có thể bạn quan tâm

Flutter khác biệt gì so với “người anh” Android?

Mẹo quy ước tên cho CSS giúp bạn rút ngắn 2/3 thời gian khi debug!

Chọn đơn vị nào là phù hợp nhất?

px

Chàng Pixel là đơn vị đo dễ sử dụng nhất.
Tuy nhiên, chàng không đem lại trải nghiệm tốt cho người dùng. Khi nàng font-sizenghe lời brouser (device) thay đổi size chữ thì Pixel vẫn giữ vững lập trường của mình. Không vì nàng font-size nhà ta mà thay đổi

px may be good at spacing and layout but are not good fit for font-size. (Dixita Ganatra)

Trở lại với vấn đề về thiết kế, Pixel, nó có thể nghe tuyệt vời với layout hay với các bác Designer/Developer, nhưng người dùng thì không như vậy. Dĩ nhiên, để khắc phục điều này, bạn vẫn có thể Zoom in / Zoom out trang web lên.

Song, liệu chúng ta có giải pháp tốt hơn ??

em

An em is equal to the computed font-size of that element’s parent.(Dixita Ganatra)

Chàng em lại không có chính kiến, rất nghe lời element “cha” mình:

rem

rem values are relative to the root html (Dixita Ganatra)

Nếu :root chưa được khai báo giá trị font-size thì sẽ lấy giá trị mặc định của brouser.

Để đơn giản hóa tính toán, mình thường để font-size của root là 10px (=1rem), như vậy, 1.6rem = 16px.

Tổng kết

Qua đặc điểm của từng loại đơn vị, ta nhận ra không có đơn vị tốt hay không tốt, chỉ có đơn vị phù hợp hay là không thôi.
Chúng ta nên chọn chàng rem hoặc em cho nàng font-size, khoảng cách (margin, padding…) thì rempx, với các layouts như menu, sub-menu thì em là một gợi ý không tồi.

Techtalk via Viblo

CHIA SẺ