2011-04-13 17 views
5

Tôi nhận thấy rằng các trình duyệt web-kit như Chrome và Safari (Windows) có xu hướng làm tròn các giá trị em cho pixel gần nhất, trong khi Firefox, IE,? Opera? có thể sử dụng giá trị pixel phụ. Đây thường không phải là một vấn đề lớn, nhưng khi tôi sử dụng em để căn chỉnh chính xác khoảng cách giữa các chữ cái hoặc sử dụng các text-shadows cho hiệu ứng nhất quán trong các độ phân giải của máy khách, điều này làm tôi nhức đầu. Hãy xem xét trong trường hợp kiểm tra sau đây.Các giá trị Web-Kit và phụ pixel, giải pháp thay thế?

Bạn sẽ thấy rằng trong FF ngay cả những chữ cái nhỏ nhất vẫn có bóng, trong khi Chrome làm tròn giá trị em xuống 0 và hai đoạn đầu tiên không có bóng.

EDIT Đây không phải là về các đơn vị. Nếu bạn thay thế 0.03em bằng 0.9, 0.8, 0.7 .. px FF sẽ hiển thị bóng nhỏ hơn và nhỏ hơn, trong khi khi Chrome xuống dưới 1px thì đột nhiên sẽ không hiển thị gì.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html lang="bg" xml:lang="bg" xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <style type="text/css">body {font-size: 18px;} p {color: cyan; text-shadow: -0.03em -0.03em 0 rgb(0, 0, 0);}</style> 
</head> 
<body> 

<p style="font-size:1em">No Shadow Test</p> 
<p style="font-size:1.5em">No Shadow Test</p> 
<p style="font-size:2em">Test</p> 
<p style="font-size:2.5em">Test</p> 
<p style="font-size:3em">Test</p> 
<p style="font-size:3.5em">Test</p> 
<p style="font-size:4em">Test</p> 
<p style="font-size:4.5em">Test</p> 
<p style="font-size:5em">Test</p> 

</body> 

</html> 
+0

Tôi sẽ không dựa vào thiết kế hoàn hảo pixel. Họ chỉ cách bạn có thể đạt được chúng là sử dụng một hình ảnh ... – Blender

+0

Thiết kế của tôi là tất cả mọi thứ, nhưng điểm ảnh hoàn hảo. Tôi không sử dụng pixel ở bất cứ đâu. –

+0

'em' dựa trên chiều cao của' m' với kích thước phông chữ hiện tại. Vì đó là dựa trên pixel, do đó, là 'em'. – Blender

Trả lời

0

Tôi sẽ không đề xuất em. Tôi muốn sử dụng px (pixel). Dưới đây là một EM để chuyển đổi PX: http://convert-to.com/446/pixels-px-to-em-conversion.html

PX là như nhau trên tất cả các trình duyệt (như xa như tôi biết)

+2

Điểm ảnh có liên quan đến độ phân giải màn hình, trong khi đó ems có liên quan đến kích thước phông chữ (kích thước phông chữ cũng tương ứng với khuôn mặt của phông chữ/chính gia đình). Cũng lưu ý rằng các bộ chuyển đổi "px" em giả định một tấn về một phông chữ, thường là bằng cách giả định rằng 16px = 1em, mà không phải luôn luôn như vậy. –

+0

Bạn có biết văn bản 10px trông như thế nào trên 800X600 và trông như thế nào trên 1920X1080? RẤT KHÁC NHAU. Những ngày của thiết kế pixel cố định tốt là trong quá khứ. –

+2

Tôi không đồng ý. Paul Irish, một yếu trong cộng đồng dev, sử dụng px thay vì em cho kích thước phông chữ _ ** [như được hiển thị ở đây] (http://na.isobar.com/standards/#_pixels_vs_ems) ** _. –

3

Điều đầu tiên tôi xin đề nghị là bạn sử dụng ex units cho tọa độ y và các giá trị chiều cao như một phông chữ có thể có x-heights riêng biệt. Điều này có thể đường cong giúp làm tròn lỗi trong lợi của bạn, nhưng có lẽ không. Trường hợp xấu nhất là nó ít nhất là chính xác với phông chữ.

Thứ hai, rất tiếc, tôi không thể tìm thấy bất kỳ tham chiếu nào trong thông số cho biết trình duyệt nên làm gì trong trường hợp này, đó là lý do chúng tôi thấy sự khác biệt? Nếu tôi sai, bạn luôn có thể gửi một lỗi với nhóm webkit?

Theo như giải pháp, tôi chỉ có thể đề xuất bạn xác định đường đi tốt nhất trong trường hợp này. Hãy nghĩ về nó tương tự như IE không hỗ trợ text-shadow. Nếu làm tròn không thành công, nó sẽ không xuất hiện. Sau đó đưa ra quyết định về thiết kế của bạn dựa trên lập trường này.

Điều mà cá nhân tôi làm là sử dụng pixel cho những thứ tôi biết có khả năng có lỗi làm tròn, chẳng hạn như bóng và đường viền.

+0

Cảm ơn! Nice viết lên, nhưng tôi không biết nếu các đơn vị là vấn đề. Vui lòng xem chỉnh sửa của tôi. –

+0

@ avok00: lời khuyên duy nhất tôi có thể đưa ra là đã có trong câu trả lời của tôi.Bạn biết rằng webkit tròn tới 0 trong một số trường hợp, do đó, sử dụng pixel trong trường hợp làm tròn có thể xảy ra có lẽ là lựa chọn tốt nhất. –

+0

Thực ra ở độ phân giải rất thấp (điện thoại), tôi sẽ cần các giá trị 0.4px, một cái gì đó mà FF/IE hiển thị (nhỏ hơn cài đặt 1px, không biết làm thế nào) và Web-kit thì không. –

3

Vấn đề là chrome sẽ không định vị văn bản và văn bản đổ bóng ở mức tăng điểm ảnh phụ, do đó, nó làm tròn tới pixel gần nhất.

Bạn có thể thấy hiệu ứng tương tự với letter-spacing, nơi firefox sẽ cho phép các giá trị không phải nguyên trong pixel, trong khi chrome sẽ làm tròn pixel gần nhất.