Khi đặt kích thước phông chữ trong CSS, tôi nên sử dụng giá trị phần trăm ( %
) hay em
? Bạn có thể giải thích lợi thế?
Khi đặt kích thước phông chữ trong CSS, tôi nên sử dụng giá trị phần trăm ( %
) hay em
? Bạn có thể giải thích lợi thế?
Câu trả lời:
Có một bài viết rất hay về kiểu chữ web trên A List Apart .
Kết luận của họ:
Định cỡ văn bản và chiều cao dòng trong ems, với tỷ lệ phần trăm được chỉ định trên nội dung (và một cảnh báo tùy chọn cho Safari 2), được hiển thị để cung cấp văn bản chính xác, có thể thay đổi kích thước trên tất cả các trình duyệt đang được sử dụng phổ biến hiện nay. Đây là một kỹ thuật bạn có thể bỏ vào túi đồ nghề của mình và sử dụng như một phương pháp hay nhất để định kích thước văn bản trong CSS đáp ứng được yêu cầu của cả người thiết kế và người đọc.
line-heights
được viết tốt hơn mà không có bất kỳ đơn vị nào cả. Đây được cho phép bởi spec, và hoàn toàn tránh quirks trình duyệt thực sự gây phiền nhiễu nhất định khi nói đến em
dựa trên dòng cao
1
. Ví dụ: iPhone 4 có chiều rộng màn hình thực là 640px, nhưng xuất hiện dưới dạng "CSS" 320 pixel (DPR = 2). Vì vậy, trang web không xuất hiện nhỏ hơn!
Từ http://archivist.incutio.com/viewlist/css-discuss/1408
%: Một số trình duyệt không xử lý phần trăm cho kích thước phông chữ nhưng giải thích 150% là 150px. (Ví dụ: một số phiên bản NN4.) IE cũng có vấn đề với phần trăm trên các phần tử lồng nhau. Có vẻ như IE sử dụng phần trăm liên quan đến khung nhìn thay vì liên quan đến phần tử mẹ. Tuy nhiên, một vấn đề khác (mặc dù đúng theo thông số kỹ thuật W3C), trong Moz / Ns6, bạn không thể sử dụng phần trăm liên quan đến các phần tử không có chiều cao / chiều rộng được chỉ định.
em: Đôi khi các trình duyệt sử dụng kích thước tham chiếu sai, nhưng đối với các đơn vị tương đối thì đó là trình duyệt ít gặp sự cố nhất. Đôi khi bạn có thể thấy nó được hiểu là px.
pt: Khác nhau rất nhiều giữa các độ phân giải và không nên được sử dụng để hiển thị. Nó khá an toàn cho việc sử dụng in ấn.
px: Đơn vị tuyệt đối đáng tin cậy duy nhất trên màn hình. Tuy nhiên, nó có thể bị hiểu sai trong bản in, vì một điểm thường bao gồm một số pixel, và do đó mọi thứ trở nên nhỏ một cách kỳ cục.
Cả hai đều điều chỉnh kích thước phông chữ tương ứng với kích thước của nó. 1,5em giống 150%. Ưu điểm duy nhất dường như là tính dễ đọc, hãy chọn cái nào bạn thấy thoải mái nhất.
Sự khác biệt thực sự rõ ràng khi bạn sử dụng nó không phải cho kích thước phông chữ. Đặt một padding
của 1em
không giống như 100%
. em
luôn liên quan đến kích thước phông chữ. Nhưng %
có thể là liên quan đến kích thước phông chữ, chiều rộng, chiều cao và có thể là một số thứ khác mà tôi không biết.
Cho rằng (gần như?) Tất cả các trình duyệt hiện thay đổi kích thước toàn bộ trang, thay vì chỉ văn bản, các vấn đề trước đây với px
so %
với so với em
về thay đổi kích thước phông chữ có thể truy cập là khá tranh cãi.
Vì vậy, câu trả lời là nó có lẽ không quan trọng. Sử dụng bất cứ điều gì phù hợp với bạn.
%
là tốt vì nó cho phép thay đổi kích thước tương đối.
px
là tốt vì nó khá dễ dàng để quản lý các kỳ vọng khi sử dụng nó.
em
có thể hữu ích khi cũng được sử dụng cho các phần tử bố cục vì nó có thể cho phép định cỡ tỷ lệ liên quan đến kích thước văn bản.
em
, chẳng hạn. Bên cạnh đó, tôi nghĩ rằng các câu trả lời về SO nên cố gắng vượt thời gian - xét cho cùng thì đó là một cơ sở kiến thức. Wikipedia về lập trình :) Vì Wikipedia được cập nhật để phản ánh sự thật, nên câu trả lời SO nên, theo ý kiến khiêm tốn của tôi.
Về sự khác biệt giữa các đơn vị css %
và em
.
Theo như tôi hiểu (ít nhất là về mặt lý thuyết / khái niệm, nhưng có thể không phải là cách hai đơn vị này có thể được triển khai trong các trình duyệt) thì hai đơn vị này tương đương nhau, tức là nếu bạn nhân em
giá trị của mình với 100
và sau đó thay thế em
bằng %
nó thì sẽ giống nhau?
Nếu thực sự có một số khác biệt thực sự giữa em và% thì ai đó có thể giải thích nó (hoặc cung cấp liên kết đến giải thích) không?
(Tôi muốn thêm nhận xét này của mình vào nơi nó sẽ thuộc về, tức là được thụt vào ngay bên dưới câu trả lời "Liam, answered Sep 25 '08 at 11:21"
vì tôi cũng muốn biết tại sao câu trả lời của anh ấy bị bỏ phiếu từ chối, nhưng tôi không thể tìm cách đặt nhận xét của mình ở đó và do đó phải viết câu trả lời "chuỗi toàn cầu" này)
Như Gal Na Uy đã đề cập, px là trang web đáng tin cậy nhất, vì mọi thứ khác bạn làm trên trang chủ yếu được trình bày liên quan đến màn hình máy tính. Vấn đề với kích thước tuyệt đối là một số trình duyệt (IE) sẽ không chia tỷ lệ các phần tử giá trị pixel trên trang web, vì vậy khi bạn cố gắng phóng to / thu nhỏ, mọi thứ sẽ điều chỉnh ngoại trừ các phần tử đó.
Tôi không biết IE8 có xử lý điều này đúng cách hay không, nhưng tất cả các nhà cung cấp trình duyệt khác đều xử lý pixel tốt và nó vẫn là một trường hợp thiểu số khi người dùng cần phóng to / thu nhỏ văn bản (hộp văn bản này trên SO có lẽ là ngoại lệ). Nếu bạn muốn thực sự khó hiểu, bạn luôn có thể thêm một hàm javascript để làm cho kích thước văn bản của bạn lớn hơn và cung cấp nút "nhỏ" / "lớn hơn" cho người dùng.
Thư viện Giao diện Người dùng Yahoo ( http://developer.yahoo.com/yui/ ) có một tập hợp các lớp css cơ sở đẹp mắt được sử dụng để "đặt lại" các cài đặt cụ thể của trình duyệt để cơ sở hiển thị trang web giống nhau cho tất cả (được hỗ trợ) các trình duyệt.
Với YUI, người ta phải sử dụng tỷ lệ phần trăm.