站长论坛

标题: 关键字是调整字体大小的答案吗 [打印本页]

作者: tznktg    时间: 2007-9-27 17:51
标题: 关键字是调整字体大小的答案吗
在处理Web页面字体大小规范的时候,Web构建者必须应付一些自相矛盾的目标。其中一个目标是控制字体大小,从而让文本能够适应页面的布局,且文本元素(例如标题、主体文本和脚注)具有合适的相对尺寸。而另一个目标是,正如可用性和可访问性指南所要求的,允许网站的访问者在他们的浏览器里重新调整文本(字体)显示的大小,以满足他们自己查看(页面内容)的需要和喜好。

当使用CSS来指定字体大小的时候,你会有三种选择,每一种都有自己的优势和劣势:

绝对度量单位(像素、点等等)
相对度量单位(em和百分比)
关键字(小、大,以及其他等等)
绝对度量单位怎么样呢?
绝对度量单位(具体地说,用于屏幕显示的像素)都是进行字体大小精确控制的毫无争议的冠军。用像素多少来确定大小的字体在所有的平台上、在主要的浏览器里,不论是旧的还是新的(只有少数例外),显示的大小都是一样的。此外,你可以使用相同的绝对度量单位来调整其他页面元素(例如图像、表格和div)的大小和位置,这就让控制这些元素与文本之间的关系变得很容易。

使用绝对度量单位来调整字体大小的唯一不足之处是,它们总是会出一个问题。大多数访问者都无法通过调整浏览器来放大或者缩小用像素计量显示的字体。这就意味着,例如,有视力问题的访问者或者在超高分辨率的显示器上必须以不舒适的小号文本来浏览你的页面,因为他们无法调整浏览器的设置,用更加合适的字体大小来显示文本。

无法调整以像素计量的字体是Windows版的Internet Explorer的一个主要问题。其他大多数流行的浏览器,包括IE5/Mac,都支持某种形式的文本缩放(Text Zoom)特性,从而调整在浏览窗里显示的文本大小,而不论字体大小是如何被指定的。然而,只要是在IE/Windows里存在的问题,对于绝大多数Web访问者来说这就是大问题,这表示大多数的Web访问者可能会碰到以像素计量的字体的访问性问题。

相对度量单位是一个相对糟糕的解决方案
相对度量单位能够让你把字体的大小指定为一个参考字体大小的相对放大或者缩小量。如果你(或者其他的访问者)更改了参考字体的大小,那么所有使用相对度量单位来指定大小的字体都会按比例改变大小,以维持与参考字体相同的比例关系。从理论上讲,这就让Web构建者可以灵活地调整字体大小,同时还通过允许访问者调整他们文本显示的小大解决了可访问性的问题。

但是,正如我在《用em和百分比调整字体大小的问题(The trouble with using ems and percents for font sizing)》里指出的,相对度量单位有一个问题,使得它们很难在很多实际的情况下使用。相对度量单位以父元素里的字体大小为基础,而没有一个固定的标准。这就意味着在嵌套元素里使用相对度量单位的字体可能会导致复合效应(compounding effect)的发生,这一效应会过分地夸大任何相对字体的变化。小(字体的)文本变得很小,而大(字体的)文本变得很大。

关键字:实现折衷的关键
另外一种进行字体大小调整的选择是使用关键字。七个关键字(xx-small、x-small、small、medium、large、x-large和xx-large)为字体大小提供了一个合理的选择范围,虽然说这些尺寸非常随意,而且在不同的浏览器里也达不到像素那样的精度。

所有主要的浏览器都支持利用关键字重新调整文本字体的大小,所以这种方法并不存在很严重的可访问性问题。字体大小的调整是任意的,但是在大多数情况下这是一个可行的解决方案。此外,大多数浏览器都把利用关键字来调整文本字体的最小尺寸限制为了9个像素,所以无论访问者如何调整他们浏览器的设置,文本都不会因为太小而无法阅读。在某些情况下,这种限制可能会消除抹煞最小的那些关键字之间的大小区别,但是至少文本的所有内容都是可读的。

不是一个完美的解决方案
在CSS里,关键字在处理字体大小规范上看起来是一个可行的解决方案,如果不是一个最理想的解决方案的话。不幸的是,CSS字体大小关键字早期的实现并不一致,在这一点上它的名声并不好,所以导致了很多Web构建者刻意避免使用它们。

关键字存在的一个问题是,这一概念的第一个实现要求:每个关键字所体现出文本大小是上一个较小关键字所表现的文本的1.5倍大,这就导致每个关键字之间所体现的文本大小差别过大。这一规范后来改为使用更为合理的1.2倍,但是直到不久以前,还是有一些浏览器用1.5倍来实现关键字。

CSS关键字的另一个问题是HTML数值字体大小的错误映射。在大多数浏览器里,普通文本字体的缺省大小是HTML3号字。因此,有些浏览器会把缺省的文本字体大小映射称为关键字“small”,因为它是从最小字体算起的第三大,而不是更加符合逻辑的关键字“medium”。

在大多数主要的浏览器里,当前关键字的实现都解决了这些问题。关键字之间的大小增减量在视觉上都是合理的,而且如果没有指定其他的尺寸,文本的字号缺省就是中号。但是,对先前问题的更正也带来了它自己的问题:浏览器的不兼容。能够在当前浏览器里生成理想结果的CSS样式在更老的浏览器里可能无法产生相同的结果。

在使用关键字指定字体大小的时候,解决浏览器不兼容的一个方案是为当前的浏览器设置一种字体大小,而对更老的浏览器使用CSS代码为其指定不同的字体大小。这项技术与Box Model Hack的相同,后者通常用来为更老的浏览器提供不同的空白、填充和大小值。像这样的hack到处都是,但是只要大量陈旧的、非标准的浏览器仍在使用中,它们就是Web构建者必须容忍的不幸的现实。




欢迎光临 站长论坛 (http://www.tzlink.com/bbs/) Powered by Discuz! X3.2