一篇不错的文章,转自:http://dancewithnet.com/2008/06/17/it-is-time-to-discard-font-size-adjustments/
今天是Firefox3的2008下载日(貌似北京时间是6.18的凌晨1:00),这就意味着Firefox3正式发布了。Firefox3有众多的改进和新功能,我最关注的功能之一是“全页面缩放(Full page zoom)”。这就意味着Firefox3和Opera以及IE7+都可以让用户“完全控制显示内容的大小同时自动调整页面布局和结构”,说白了就是可以让整个页面直接放大或缩小却不会乱掉。这就意味着我们不用再考虑为了可访问性而整个页面是基于字体大小(em)的设计了。
在CSS中,有两种单位。一种是绝对长度单位,包括英寸(in)、厘米(cm)、毫米(mm)、点(pt)和派卡(pc)。另一种是相对长度单位,包括em、ex和像素(px)。ex由于在实际应用中需要获取x大小,因浏览器对此处理方式非常粗糙而被抛弃(更多内容可以参考Eric A. Meyer的《CSS权威指南》),所以现在的网页设计中对大小距离的控制使用的单位是em和px(当然还有百分数值,但它必须是相对于另外一个值的)。
在css中,1个“em”定义为一种给定字体的font-size值。所以1em可能随元素的不同而不同,它会相对于父元素字体大小而改变。在常见浏览器下,默认字体的大小为16px。常见有两种方法来进行网页设计:
设置默认字体大小为10px:
body{font-size:62.5%;}
#wrapper{width:97.4em;}
这便于依次计算出其他元素的长宽值,比如某个容器#wrapper的宽度是974px,CSS中定义为97.4em。本站随网之舞就是依据这种方式来实现的。
设计默认字体大小为网页中最常用字体的大小,比如最常用字体的大小是12px:
body{font-size:75%;}
#wrapper{width:81.1667em;}
这样虽然省去了设置默认字体的大小,但是偶尔却为严格尺寸设计带来麻烦,比如你要设置那个宽为974px的容器#wrapper就会遇到此类麻烦。其实第一种方法也会遇到类似麻烦,只不过比第二种少些。
基于字体大小的设计好处很明显,当用户调整浏览器默认字体的大小时,字体和页面会随之缩放,能够满足挺这种方法的人常说的一个优点就是弱视的人可以通过放大字体来看清楚页面内容,增强了页面的可访问性。
每个屏幕都有分辨率,比如1280×1024分辨率时屏幕就有1280×1024个点,这每个点就是一个像素(px)。所以利用px来设计网页,不存在em那种相对于父元素字体大小变化而变化的问题。而实际上绝大部分的站点设计都是基于px设计的。在Windows平台下IE7之前都无法通过调整浏览器中的“字体大小”来调整文本大小,非IE浏览器可以,但实际上是一般基于px的页面,一旦仅仅调整了文本大小页面就会乱掉(在Firefox 2下观看除中国雅虎外的门户网站,调整一下字体大小就了解了)。
为了IE下不能调整以px为单位的字体大小,而非IE下可以的问题,YUI CSS Tools采用了如下代码来设置默认1em的大小,支持用户的字体大小调整:
body {font:13px/1.231 arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}
为此IE默认情况下,1em的大小是13.3333px,所以你会看到YUI CSS Grids里面那些诸如width:73.076em;这样的值。
所以,基于字体大小(em)的设计和基于px的设计相比而言:
1.基于字体大小(em)的设计页面带来的缩放效果有限,最早基于字体大小设计的门户网站应该就是Yahoo和MSN了,而实际上它们也仅仅是保证了上下缩放三级而已,再多就乱掉了。
2.现在的站点越来越多的图文混排,图像的高度和宽度本身就是像素数。除非你通过CSS来把图片的大小设置为相应的em值,就像本站的Logo这样,否则图片是不会随着文字变化而变化的。但是如果采用的是背景图片,那就基本上无计可施了。所以实际上基于字体大小来做图文混排设计的网页需要对图像的设计是有相当严格的要求的,即使如此仍无法完美解决,但复杂度却上升不少。
3.基于字体大小的网页设计,将使长度变得的非常的不直观,导致设置一个宽度变得非常麻烦,YUI CSS Grids中说明了这点。并且由于em会相对于父元素字体大小变化而变化的问题,导致图文混排的复杂设计时非常麻烦。特别是在盛行过度设计和精确到像素的这个浮躁时代。其实连Google和百度这种非常简单的首页都或多或少的利用px来布局。
现在主流浏览器都支持了“全网页缩放”功能,Safari尚未支持这个功能(Google的新推出的Chrome和Safari的基于同一个核心,很遗憾也不支持这个功能),而是像Firefox2一样支持文本缩放,但是具有讽刺意味的是Apple页面基本上都是基于px的,所以一缩放就乱掉,我深信Safari支持这个功能仅仅是时间问题。两年前有篇《95%的中国网站需要重写CSS》很流行,虽然保证用户的可访问性是应该的,但是应该找到其最佳实现的方法,毫无疑问浏览器的“全页面缩放”功能是最佳选择。从现在开始,基于px的设计不用再过于背负违背可用性的恶名了,基于em(文字大小)的设计不能给我们带来太多的好处,反而有可能耗费太多的精力挣扎于如何精确保护视觉设计上,设计师的精力应该更多的放在内容的理解、快速呈现、语义化、对屏幕阅读器的支持等等方面上。
全球范围内IE6已经不到40%了,中国用户比率应该高些,但趋势是一样的,毕竟IE8都出Beta了,IE6会很快成为历史的。如果你是偏执狂,需要考虑Firefox2和Safari的话,或许设置body{font-size:10px;}再基于em进行设计是一个不错的办法,中国雅虎的首页就是利用类似原理。总之,是时候不用考虑基于字体大小(em)的设计了,特别是针对IE6的解决方案。
分享到:
相关推荐
em 是一种相对单位,它允许我们基于元素自身的字体大小或者其父元素的字体大小来定义元素的尺寸。W3C 推荐使用 em 单位,因为它具有更好的可扩展性和响应式设计能力。 1. em 单位的原理: 1em 等于当前元素的字体...
在实际应用中,设计师和开发者应综合考虑网页的布局、目标用户群体、可访问性和一致性,选择合适的字体大小单位和策略,以提供最佳的用户体验。同时,随着CSS3的引入,更多新的单位如rem(根元素的字体大小)也进入...
em是一种相对单位,基于父元素的字体大小,使得布局更加灵活,更适合响应式设计。 1. **em单位介绍**: em单位是一个相对于当前元素字体大小的长度单位。如果在一个元素中设置一个元素的宽度为1em,那么它的宽度将...
在设计时,考虑到可访问性和可用性,推荐的做法是至少提供一种可缩放的字体大小选项,让用户能够自定义字体大小。此外,字体大小应该适应各种屏幕尺寸,以确保在移动设备和桌面设备上都能提供良好的阅读体验。 综上...
在CSS网页设计中,字体大小的设计是一个至关重要的环节,它直接影响到网页的视觉效果和用户体验。CSS提供了多种方式来设置字体大小,包括绝对单位、相对单位以及百分比等。理解并掌握这些单位的特性和使用场景是提升...
相关文章:CSS教程:简单理解em ...今天是 Firefox3的2008下载日 ,这就意味着Firefox3正式...这就意味着我们不用再考虑为了可访问性而整个页面是基于字体大小(em)的布局了。 在CSS中,有两种单位。一种是绝对长度单位,
EM单位在CSS中是一种非常强大的相对单位,它的主要特点是基于父元素的字体大小来计算元素的尺寸。这篇文章将深入探讨EM单位的使用,以及如何利用它构建灵活的弹性布局。 首先,我们要理解什么是弹性布局。弹性布局...
例如,如果body的字体大小设置为16px,一个设置为1em的元素将具有16px的字体大小。然而,em单位的继承性会导致计算复杂,因为子元素的em值会基于父元素的em值,这可能导致不期望的缩放效果。为简化计算,通常会在...
em单位是基于元素字体的高度,可以是元素自身的字体大小,或者当用于字体大小属性时,代表其父元素的字体大小。ex单位则基于小写字母x的高度,但实际应用中不如em普遍。百分比单位则是相对于父元素的字体大小。 CSS...
em相对于父元素的字体大小,而rem始终基于根元素(通常是`html`)的字体大小。例如,`font-size: 1.5em;`表示字体大小为父元素的1.5倍。 三、CSS变量 CSS变量(也称为CSS自定义属性)允许我们定义全局变量,然后在...
在CSS中,字体大小设置是网页设计中不可或缺的一部分,它直接影响着页面的可读性和视觉效果。本篇文章将重点讨论三种常用的字体大小单位:像素(px)、相对单位(em)以及CSS3引入的根字体单位(rem)。 1. **像素(Pixel,...
为了实现跨浏览器的一致性和更好的可访问性,网站开发者应该考虑采用em单位来定义字体大小,并且在设计时充分考虑不同用户的视力需求。这不仅有助于提升用户体验,还符合国际上的网页可访问性标准,如美国的Section ...
2. **基线问题**:由于`em`值的计算基于当前元素的字体大小,因此在没有明确指定`font-size`的情况下,所有基于`em`的尺寸都将回退到浏览器的默认字体大小,这可能在不同浏览器之间产生不一致性。 ### 总结 综上所...
`em`单位是基于父元素的字体大小,允许元素的大小随父元素的大小变化而变化。但`em`单位在层叠的嵌套元素中可能导致计算复杂,因为每个元素的大小依赖于其父元素的大小。 例如,如果我们设定`body`的`font-size`为`...
这种方式非常适合用于响应式布局,因为它允许我们基于一个基准值来灵活地调整整个页面的字体大小。 ##### 2. 动态字体调整 动态字体调整是指根据用户的屏幕尺寸或设备特性实时改变字体大小的技术。这对于移动设备尤...
ems是相对单位,基于父元素的字体大小,适用于响应式设计;百分比同样为相对单位,根据父元素的字体大小按比例调整。 2. **字体大小对照表**: - 6pt 对应 8px,0.5em,50% - 7pt 对应 9px,0.55em,55% - 8pt ...
`em`是基于父元素字体大小的相对单位,而`rem`始终相对于根元素的字体大小。这意味着,如果我们改变`html`元素的字体大小,所有使用`rem`单位的元素都将相应地调整其大小。这种特性使得`rem`在创建可扩展的布局时...