为什么要使用em而不是px?

856

我听说你应该使用em而不是像素来定义样式表中的大小和距离。那么问题来了,为什么在CSS中定义样式时应该使用em而不是px?有没有一个很好的例子说明这一点呢?


2
就算不值钱,这里是CSS中不同单位的定义:http://www.w3.org/TR/css3-values/#lengths。 - Ryan
15个回答

2

如果您想使用px指定字体大小,但仍希望通过em提供可用性,则有一个简单的解决方案,只需将以下内容放置在CSS文件中:

body {
  font-size: 62.5%;
}

现在,您可以按照以下方式指定p(和其他)标签:
p {
  font-size: 0.8em; /* This is equal to 8px */
  font-size: 1.0em; /* This is equal to 10px */
  font-size: 1.2em; /* This is equal to 12px */
  font-size: 2.0em; /* This is equal to 20px */
}

And so on.


2
这不是高度依赖于没有人触碰他们浏览器的自定义 CSS 设置吗? - Spoike
4
好的,你只需要将 font-size: 10px 设为默认值即可。参考链接为 http://css-tricks.com/forums/discussion/1230/the-problem-with-bodyfont-size62.5-and-ems/p1。 - m33lky
我更喜欢保留font-size: 100%并使用mixin计算em值。 - gunnx

2
使用em或百分比的主要原因是允许用户更改文本大小而不会破坏设计。如果您使用指定为px的字体进行设计,则它们在用户选择“文本大小 - 较大”时(在IE 6和其他浏览器中)不会更改大小。这对视力障碍者非常不利。
有关此类设计的多个示例和文章(可以从中选择众多),请参见A List Apart的最新一期:Fluid Grids,旧文章How to Size Text in CSS或Dan Cederholm的Bulletproof Web Design
您的图像仍应显示为px大小,但通常情况下,使用px调整文本大小并不被认为是好的做法。
尽管我个人非常厌恶IE6,但目前它是我们财富200强公司中大部分用户批准的唯一浏览器。

1
+1 流式网格实际上是我提问时正在寻找的内容。(另外,你们公司不应该升级到IE7吗?) - Spoike
如果你问我,他们应该使用Firefox,但实际上他们并没有问我。 :-) (IE7比6更好,但我不知道决策是什么) - Traingamer

0

在 IE6 完全退出你的网站之前,你可能想使用 em 作为字体大小的单位。当页面缩放(而不是文本缩放)成为标准行为时,px 将是可以接受的。

Traingamer 已经提供了必要的链接


-1

一般共识是使用百分比进行字体大小调整,因为在不同浏览器/平台上更加一致。

不过有趣的是,我以前总是使用pt来调整字体大小,并且我认为所有网站都使用它。在其他应用程序(例如Word)中,通常不使用px大小。我想这是因为它们是用于打印的 - 但在Web浏览器和Word中,大小是相同的...


-7
避免使用 em 或 px,改用 rem,因为更容易找到计算值。但在 em 和 px 之间,px 更好,因为 em 很难调试。

3
抱歉,根据我的工作职责和限制,我只能提供字面翻译并尽可能使其通俗易懂,但不能添加任何解释或其他内容。 - Nico Haase

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接