em单位全面解读

em单位

编写可扩展样式表的最重要工具就是em单位,因此它被首先介绍。使用em来制作可伸缩的样式表。它最初以字母M命名,em单位在印刷术中有一个长期的传统,即用于度量水平宽度。例如,把在美国文本中常常看到的长划线(-- )称为破折号,因为从历史观点上看,em单位具有和字母M相同的宽度。它较窄的形式(-)常常出现在欧洲文本中,与上类似称为连接号。

这么多年以来em的含义已经发生了变化。并不是所有字体都包含字母M(例如汉字),但是所有字体都有高度。因此该术语逐渐是指字体的高度-- 而不是字母M的宽度。

注释:

em可用来制作可伸缩的样式表!

在CSS中,em单位是一种用于测量长度的通用单位(例如元素周围的页边空白和填充)。可以在水平和垂直方向使用它,这使习惯于仅把em用于水平测量的传统印刷商感到震惊。通过扩展em单位使其能够用于垂直测量,使它已变成一个强大的单位-- 因为它如此强大以至于很少使用其他长度单位。

让我们看一个简单的示例,在此我们使用em单位来设置字体大小:

<HTML>
<STYLE>
H1 { font-size: 2em }
</STYLE>
<BODY>
<H1>Movies</H1>
</BODY>
</HTML>

当用于指定字体大小时,em单位是指父元素的字体大小。因此,在上面的示例中H1元素的字体大小被设定为BODY元素的字体大小的两倍。为了查明H1元素的字体大小,需要了解BODY的字体大小。由于在样式表中没有指定这种字体大小,浏览器必须在其他某个方找到字体大小-- 一个恰当的地方是在用户的首选项中。因此如果用户将正常的字体大小设置为10磅,那么H1元素的字体大小就为20磅。这使得文档标题行相对于周围的文字而言更引人注目。因此,最好总是使用em来设置字体大小。

注释:

总是使用em来设置字体大小!

习惯于桌面发布的设计者可能不希望em引入的间接方式,而愿意直接指定字体大小应该是20磅。在CSS这样做是可行的(参看第5章"字体"中有关字体大小属性的描述),但是使用em是一种更好的解决方案。假如一个视力较差的用户将他的正常字体大小设置为20pt(20磅)。如果正如所建议的那样,H1的字体大小是2em,H1元素的字体大小将会随着缩放并以40磅显示。但是如果样式表将字体大小设置为20磅,那么字体将不能缩放并且标题行的尺寸将与周围文字的大小相同。

em单位的作用并不仅限于字体大小。图3-1显示了一个所有长度都用em指定的页面设计-- 包括元素周围的填充和页边空白。

让我们首先考虑填充。在CSS中,填充是在某个元素周围添加的空白以便将该元素与其余内容相分离。填充的颜色总是与它所围绕的元素的背景颜色相同。在图3-1中,使用此条规则为右边的菜单增加了填充:

DIV.menu { padding: 1.5em }
通过使用em来指定填充宽度,填充的宽度是相对于DIV元素的字体大小而定的。作为一个设计者,确实不必关心用户屏幕上填充的确切宽度;设计者关心的是正在编排的页面的比例。如果元素的字体大小增加,那么元素周围的填充也随之增加。图3-2说明了这一情况,其中菜单的字体大小增加了,同时页面比例却保持不变。
 
(点击查看大图)图3-1  使用em指定本页面上的所有长度
 
图3-2  由于使用em来指定页边空白和
填充,它们相对于字体大小而缩放
在菜单填充的外面是页边空白区域。页边空白区域确保在元素的周围有足够的空白以便使页面看起来不那么紧促。下面这条规则用来设置菜单周围的页边空白:
DIV.menu { margin: 1.5em }

图3-2标识出了页边空白区域。再次指出,使用em能够确保可缩放的设计。

在本书中可以找到em的另一个作用,即将大多数段落第一行的缩进尺寸设置为1.8em。相同的数值用于代码示例的左边页边空白,如下面所示:

P { text-indent: 1.8em }
PRE { margin-left: 1.8em }

那么既然em如此重要,CSS为何还要使用其他单位呢?因为在有些情况下,其他单位也是有用的。例如,这里给出了一种百分比也同样适用的情况,即使并不比em更好:设置BODY元素的页边空白。要记住在HTML页面中显示的所有内容都在BODY内部,因此设置该元素的页边空白也就是设置页面的整体形状。使用如下这两条规则可以在页面两边提供适度宽度的页边空白:

BODY {
margin-left: 15%;
margin-right: 10%
}

这种设置使文本占据整体宽度的75%,并且左边的页边空白比右边的页边空白略宽。尝试这样做一下!您会发现页面看起来更加专业。在BODY元素上设置的百分数值通常是相对于浏览器窗口的。因此在上一个示例中,文本将覆盖75%的浏览器窗口。

注释:

使用相对单位度量长度!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值