em单位的历史

Heero.Luo发表于14年前,已被查看2198次

em是近年来讨论得比较多的一个长度单位。其实早在Jeffrey Zeldman写的《网站重构》(中文版于2004年出版)一书中就提到过这个单位,只是当时流行用px(像素)单位,所以很少人留意到em。与px这种绝对长度单位不同,em是相对长度单位,1em代表的是一个字的大小。为何要用字体的大小作单位呢?

多年前,在XHTML+CSS还没有被大多数人知道的时候,网页制作很强调一致性,也就是说让网页在所有用户的机器上的显示基本一样。这里最大的影响因素是字体大小。由于浏览器本身提供了调整字体大小的功能,因此,通过font标签的size属性设置的字体大小会随着浏览器设置而改变。幸运的是,CSS中有一个固定的单位——px。于是,人们开始使用CSS定义字体大小,通常会给body定义一个默认字体大小,在中国,这个值通常是12px。后来,有人注意到视力差的人看12px的字很吃力。那调整到14px?16px?不行,对于视力正常的人来说,12px还是最美的。那怎么办呢,难道要做好几套页面?这明显不划算,于是,浏览器的字体大小设置又一次登上历史舞台,但是在XHTML+CSS的页面中,已经不提倡用font标签定义字体大小,所以一些开发者开始应用有异曲同工效果的em单位。然而,em的一些缺点却限制了它的应用:

首先,em单位的计算很复杂。页面的不同部分,甚至是在同一个段落里面,字体大小都有可能不同。这时候再去算这个字是1em的多少倍,这可是算死人的。

其次,在Javascript中获取的高度、宽度等都以px为单位,而不是em。

再次,美工做的效果图是固定大小(一般以px为单位)的,而px与em的转换存在一点误差,不能百分百保证页面布局。

不得不承认,计算机技术的发展是飞快的。还没等em单位流行起来,浏览器就已经提供调整页面大小的功能。于是,em单位又成了鸡肋。虽然本来的用处是没了,但是对咱们中国用户来说,em还是挺有用的。中文的文章有一个很大的特征——一般会在段首空两个字。如果用px作为单位,对12px字体来说需要空出24px,对14px字体来说需要空出28px……这样换算非常不通用。如果用上em单位,这个问题就很好解决了,1个字的大小就是1em,那两个字的大小就是2em。因此,只需这样定义就行了:

p { text-indent: 2em; }

评论 (1条)

发表评论

(必填)

(选填,不公开)

(选填,不公开)

(必填)