我正在设计一个新网站,我希望它与尽可能多的浏览器和浏览器设置兼容。我正在尝试决定我应该为字体和元素的大小使用什么度量单位,但我无法找到一个确凿的答案。
我的问题是:我应该在我的 CSS 中使用 px
或 rem
吗?
- 到目前为止,我知道使用
px
与在浏览器中调整基本字体大小的用户不兼容。 - 我忽略了
em
s,因为与rem
s 相比,它们更难以维护,因为它们是级联的。 - 有人说
rem
与分辨率无关,因此更可取。但是其他人说大多数现代浏览器无论如何都会平等地缩放所有元素,因此使用px
不是问题。
我问这个是因为对于 CSS 中最理想的距离度量有很多不同的意见,我不确定哪个是最好的。
原文由 user1218247 发布,翻译遵循 CC BY-SA 4.0 许可协议
TL;DR: 使用
px
。事实
px
单位 不 等于一个物理显示像素。这 一直 是正确的——即使在 1996 年的 CSS 1 规范 中也是如此。CSS 定义了 _参考像素_,它测量 96 dpi 显示器上像素的大小。在 dpi 与 96dpi 显着不同的显示器(如 Retina 显示器)上,用户代理重新调整
px
单位,使其大小与参考像素的大小匹配。换句话说,这种重新缩放正是 1 个 CSS 像素等于 2 个物理 Retina 显示像素的原因。也就是说,直到 2010 年(尽管存在移动缩放情况),
px
几乎总是等于一个物理像素,因为所有广泛可用的显示器都在 96dpi 左右。em
中指定的尺寸是相 _对于父元素的_。这导致了em
的“复合问题”,其中嵌套元素逐渐变大或变小。例如:给我们:
rem
始终仅相对于根html
元素,现在 99.67% 的正在使用的浏览器都 支持。意见
我认为每个人都同意,将您的页面设计为适合所有人,并考虑到视障者是很好的。一个这样的考虑(但不是唯一的一个!)是允许用户使您的站点的文本更大,以便更容易阅读。
一开始,为用户提供缩放文本大小的唯一方法是使用相对大小单位(例如
em
s)。这是因为浏览器的字体大小菜单只是改变了根字体大小。因此,如果您在px
中指定字体大小,则在更改浏览器的字体大小选项时它们不会缩放。现代浏览器(甚至不那么现代的 IE7)都将默认缩放方法更改为简单地放大所有内容,包括图像和框大小。本质上,它们使参考像素变大或变小。
是的,仍然有人可以更改他们的浏览器默认样式表来调整默认字体大小(相当于旧式字体大小选项),但这是一种非常深奥的方法,我敢打赌没人会这样做。 (在 Chrome 中,它隐藏在高级设置、Web 内容、字体大小下。在 IE9 中,它更加隐藏。您必须按 Alt,然后转到查看、文本大小。)只需选择缩放选项就容易多了浏览器的主菜单(或使用
Ctrl
++
/-
/鼠标滚轮)。1 - 自然在统计误差范围内
如果我们假设大多数用户使用缩放选项缩放页面,我发现相对单位大多无关紧要。如果所有内容都以相同的单位指定(图像均以像素为单位),则开发页面会容易得多,并且您不必担心复合。 ( “有人告诉我不会有数学运算” ——需要计算 1.5em 的实际结果。)
仅对字体大小使用相对单位的另一个潜在问题是用户调整大小的字体可能会破坏您的布局所做的假设。例如,这可能会导致文本被剪裁或运行时间过长。如果您使用绝对单位,则不必担心意外的字体大小会破坏您的布局。
所以我的答案是使用像素单位。我使用
px
做所有事情。当然,您的情况可能会有所不同,如果您必须支持 IE6(请 RFC 之神怜悯您),无论如何您都必须使用em
s。