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


当前回答

我问这个问题的原因是,我忘记了如何使用它们,因为有一段时间我正在愉快地使用CSS进行黑客攻击。人们没有注意到我将这个问题保持一般性,因为我并没有谈论字体本身的大小。我更感兴趣的是如何在页面上的任何给定块元素上定义样式。

正如Henrik Paul和其他人指出的,em与元素中使用的字体大小成比例。在px中定义块元素的大小是一种常见的做法,然而,在浏览器中调整字体大小通常会破坏这种设计。通常使用快捷键Ctrl++或Ctrl+-调整字体大小。因此,一个好的做法是使用em。

使用px定义宽度

下面是一个示例。假设我们有一个div标签,我们想把它变成一个时尚的日期框,我们可能有如下HTML代码:

<div class="date-box">
    <p class="month">July</p>
    <p class="day">4</p>
</div>

一个简单的实现将以px定义日期框类的宽度:

* { margin: 0; padding: 0; }

p.month { font-size: 10pt; }

p.day { font-size: 24pt; font-weight: bold; }

div.date-box {
    background-color: #DD2222;
    font-family: Arial, sans-serif;
    color: white;
    width: 50px;
}

问题是

然而,如果我们想在浏览器中调整文本的大小,设计就会失败。正如弗洛丁指出的,文本也会在框外溢出,这几乎与SO的设计相同。这是因为该框的宽度将保持不变,因为它被锁定为50px。

改用em

更聪明的方法是在ems中定义宽度:

div.date-box {
    background-color: #DD2222;
    font-family: Arial, sans-serif;
    color: white;
    width: 2.5em;
}

* { margin: 0; padding: 0; font-size: 10pt; }

// Initial width of date-box = 10 pt x 2.5 em = 25 pt
// Will also work if you used px instead of pt

这样,日期框上就有了一个流畅的设计,即该框的大小将与为日期框定义的字体大小成比例地与文本一起增大。在本例中,字体大小在*中定义为10pt,大小将为该字体大小的2.5倍。因此,当您在浏览器中调整字体大小时,该框的大小将是该字体大小的2.5倍。

其他回答

托马斯鲁特(thomas rutter)的最高分答案是正确的,但关于像素的大小是非常错误的。所以,即使它很旧,我也不能让它被破坏。

电脑屏幕通常不是96dpi!(或者ppi,如果你想迂腐的话。)

像素没有固定的物理大小。(是的,它只固定在一个屏幕上,但在下一个屏幕中,像素很可能更大或更小,当然不是1/96英寸。)证据画一条960像素长的线。用物理尺测量。是10英寸吗?不将你的笔记本电脑连接到电视上。现在线路是10英寸吗?还是没有?在iPhone上显示该行。还是一样大小?为什么不呢?

谁发明了96dpi电脑屏幕神话?(有些宗教使用72dpi的神话。但同样错误。)

使用px精确放置图形元素。使用em进行测量,必须在文本元素周围进行定位和间隔,如行高等。px是像素精度的,em可以随使用的字体动态变化

在IE6(从您的网站上)消失之前,您可能希望使用em作为字体大小。当页面缩放(与文本缩放相反)成为标准行为时,Px将正常。

Trainfamer已经提供了必要的链接。

普遍的共识是使用百分比来调整字体大小,因为它在浏览器/平台之间更加一致。

有趣的是,我以前总是使用pt来调整字体大小,我假设所有网站都使用pt。你通常不会在其他应用程序(如Word)中使用像素大小。我想这是因为它们是用于打印的-但在web浏览器中的大小与Word中的大小相同。。。

使用em或百分比的主要原因是允许用户在不破坏设计的情况下更改文本大小。如果您使用以px指定的字体进行设计,则如果用户选择文本大小更大,字体大小不会改变(在IE 6和其他浏览器中)。这对于有视觉障碍的用户来说非常糟糕。

有关此类设计的几个例子和文章(有无数可供选择),请参阅最新一期的“a List Apart:Fluid Grids”,旧一期的文章“How to Size Text in CSS”或Dan Cederholm的防弹Web Design。

您的图像仍然应该以像素大小显示,但通常情况下,用像素大小显示文本被认为是不好的形式。

尽管我个人很鄙视IE6,但它目前是《财富》200强公司中唯一一款被大多数用户认可的浏览器。