一. 字体大小
font-size是可以继承的。换句话说,改变一个元素的字体大小,可能会导致其子元素字
体大小成比例地变化。比如说把body元素的font-size设定为200%,那么页面中所有元素
的文本都会增大一倍。
之所以出现这种效果,是因为浏览器样式表在设定所有元素的字体大小时,使用的都是相
对单位em。比如,h1被设定为2em,h2是1.5em,p是1em。默认情况下,1em等于16像素,
这也是font-size的基准大小。换算成绝对值,h1就是32像素,h2是24像素,p是16像素。
如果把body的字体大小设定为20px,就是重新设定了基准大小(body可是所有元素的祖先
啊)。因此,h1会变成40像素,h2会变成30像素,而p会变成20像素。不过,那些以像素之
类的绝对单位重新设定字体大小的元素,不会继承祖先元素的字体大小,它们会按照设定
的大小显示。
好了,下面看一看设定字体大小的两种方法。
- 绝对字体大小
使用像素、派卡(pica)或英寸设定字体大小很简单,它们是绝对单位,因此设定多大就多
大,与祖先元素的字体大小无关。使用绝对单位的缺点很明显,那就是在需要调整页面所
有元素的字体大小时,必须一个一个地修改样式表中的font-size,相当麻烦。
设定绝对字体大小时,也可以使用关键字值,比如x-small、medium、x-large,等
等。其中,medium等于基准大小,其他关键字要么小一点,要么大一点。
简言之,修改body元素的字体大小,不会影响页面中以绝对单位控制的元素,但没有设定
字体大小的元素则会与body的字体大小成比例变化。
简言之,修改body元素的字体大小,不会影响页面中以绝对单位控制的元素,但没有设定
字体大小的元素则会与body的字体大小成比例变化。 - 相对字体大小
使用百分比、em或rem(根元素的字体大小)设定字体大小要复杂一些。如果你给某个元素
设定了相对字体大小,则该元素的字体大小要相对于最近的“被设定过字体大小的”祖先元
素来确定。
比如以下标记
<body>
<p>This is <strong>very important!</strong></p>
</body>
和下面的CSS
p {font-size:.75em;}
strong {font-size:.75em;}
如果你想使用em,但又需要设定具体的像素大小,可以把body的font-size设定
为62.5%。这样,就等于把基准大小从16像素改为10像素(16×62.5%=10)。然后,em与
像素的对应关系就十分明确了,比如1em等于10像素,1.5em等于15像素,2em等于20像
素,等等。
p元素的文本为12像素(body的16像素基准大小×.75=12),折合成点单位是9点。strong
是p的子元素,它的文本是多大呢?相对大小会逐层复合,strong的大小应该是16像素
×.75×.75=9像素。要熟悉相对单位的这种计算方式,需要多实践。最终你会知道,改变一
个元素的相对字体大小,其子元素的字体大小也会同比例变化。
使用相对字体大小,自动调整各层元素
相对大小的好处也很明显,因为使用相对大小后,通过调整body元素的字体大小,可以成
比例地改变所有元素的字体大小。或者,至少能通过改变某个祖先元素,只影响它的所有
子元素。在反复修改布局设计的时候,这样显然能节省时间。可反过来,毕竟是“牵一发而
动全身”的事,所以使用相对字体大小时,必须事先规划好。
使用绝对字体大小是没有办法统一调整的。绝对字体大小只能个别设定,个别修改。当然
啦,使用绝对单位的好处呢,就是在祖先元素的字体大小变化时,不会出现意外的“连锁反
应”。
不管怎么说,今天设备的屏幕尺寸可谓千差万别,既有特大的显示屏,又有很小的手机屏
幕。在这种形势下,更容易缩放的相对大小应该是首选。
3.关于rem单位
CSS3新增了一个相对单位rem(root em,根em),这个单位引起了广泛关注。这个单位与
em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只
是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只
修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目
前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法
也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面
就是一个例子:
p {font-size:14px; font-size:.875rem;}
二 . CSS文本属性
: