日期:2013-07-21  浏览次数:20974 次

  有几种方法可以用来指定 Web 页面上的字体尺寸。首先,你可以使用关键字,比如small 或者 large;其次,你还可以使用固定的量度,比如象素(pixel)或点陈(point);或者你还可以使用绝对量度,比如 em 或者百分比。关键字简单易用,但是缺乏灵活性和精确性,固定量度可能会比较精确,但是对于那些想依据本人的需求和偏好来调整字体尺寸的用户来说,可能会带来一些易用性问题。绝对量度可以处理这一易用性问题,但是也会带来它们本人的问题。

  应该可行的方法

  绝对量度能够指定字体的尺寸比一些标准的参考尺寸大多少或者小多少。使用百分比设定字体尺寸能够字体尺寸表示为参考字体的字符框高度(字母字符的顶部到字母字符的底部之间的距离)的一个百分比。

  Em 是基于排版转换的一种量度,它定义1em为参考字体的大写字母的高度。出于与其它量度保持分歧性的考虑,CSS 定义1em为字符框的高度。以 em 表示的尺寸是十进制小数或者参考字体尺寸的倍数。因此,2em和200%是一样的,而.75em和75%也表示同样的尺寸。

  理论上,使用绝对量度来指定字体尺寸不论对于 Web 开发人员还是对于 Web 用户都具有明显地优势。通过将字体尺寸指定为标准参考尺寸的一个绝对变化值,你可以将焦点集中在尺寸关系上,而无须用特定的数字为每个字体款式指定一个尺寸。

  如果更改参考字体的尺寸,所有以绝对量度指定的字体都会相应地调整尺寸,以维护其与参考字体的尺寸比值。这就意味着 Web 开发人员只需更改 body 标签一个地方的字体尺寸就可以更改整个页面上所有的字体尺寸。类似地,这种方法还允许访问者调整他们的浏览器的字体尺寸设置,进而调整浏览器窗口中字体的尺寸,而且也不会丢失绝对字体尺寸能够传达的任何意义。

  天堂中的麻烦

  不幸的是,理论上听起来很合理的东西,实际用的时候总是不会那么好。使用绝对量度来设置字体尺寸时的一个次要问题是参考字体尺寸缺乏分歧的标准。基于 Windows 操作系统的浏览器的传统的默认字体尺寸是16像素,并且假设屏幕的分辨率是每英寸96象素。而在苹果机上,传统的默认字体尺寸是12象素,屏幕的分辨率是每英寸72象素。

  虽然 Windows 的默认字体尺寸是推荐的官方标准,但是很多铁杆苹果用户(其中包括很多 Web 开发人员)继续使用传统的苹果默认设置。这些设置趋向于错误地诱导苹果用户对“normal(普通)”字体尺寸的印象。这对于使用任何方式指定字体尺寸的 Web 开发人员来说都是一个问题,但是对于采用绝对量度来指定字体尺寸的 Web 开发人员来说这个问题尤为严重,由于当显示字体的尺寸与普通尺寸离的较远时,标准参考字体尺寸的一点差别都会被夸大很多。

  采用绝对字体尺寸的另外一个次要问题是基于浏览器默认字体尺寸的所有的尺寸计算都不是必须的,即便对于在 body 标签中指定的字体也是这种情况。相反,所有绝对尺寸都是基于父元素的字体尺寸来计算的。这就会使事情变得很复杂,由于元素可以嵌套,而且通常会嵌套的很深。例如,你的一段文字可以位于一个 div 中的另一个 div 中的一个 table 的一个 cell 中。如果在每一级都使用绝对量度来指定字体尺寸,那么绝对量度可能会互相混合,导致字体尺寸比你所期望的要大的多或小的多。

  对嵌套元素使用绝对尺寸所产生的组合效果可能会导致绝对字体尺寸难于使用,容易把人搞糊涂。最坏的情况是,不同的浏览器识别父元素的方式不同,因此以哪种字体尺寸作为绝对尺寸的参考尺寸也会不同。通常,Netscape 4.x 是差别最大的浏览器,但是在当前的浏览器中仍然还有非常多的不分歧性会频繁地惹起绝对字体尺寸的问题。

  当好心没有取得好的效果时

  绝对字体尺寸是一个非常伟大的想法,由于对于 Web 开发人员来说它同时处理了用户易用性和设计灵活性的问题。为了成功地使用绝对字体尺寸来设置字体,你需求非常细心肠计划你的页面设计和 CSS 款式,以避免嵌套元素所带来的潜在问题。你可以做到这一点,但是理想并不像你想象地那么容易,而且它还对你的设计选项强加了相当大的限制。否则,你需求依赖关键字或者绝对量度来设置字体尺寸。