日期:2014-05-17 浏览次数:20593 次
浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置,这就导致如 果直接利用默认样式的页面在各个浏览器下显示非常不一致,于是就有了类似YUI的reset 之类用来尽量重写浏览器的默认设置保证各个浏览器样式一致性的做法。
拿字体 来说,各个浏览器默认的字体种类、字体大小和字体行高都不一样,比如IE8的中文版在Windows XP下显示网页时默认字体是宋体,而英文版肯定不会如此。所以我们需要统一设置默认的字体样式,以便实现一致的显示效果来保证设计 的一致性和提高开发效率。
通常用户看到的页面的样式会受到三层控制:
和CSS 一样,后面的优先级 高于前面的,也就是说网页定义样式可以覆盖浏览器的默认样式,而用户自定义样式优先级最高。不过,当有 !important 时,网页样式可以覆盖用户自定义样式。用户!important > 网页!important > 用户 > 网页 > 浏览器默认 。
我们页面的绝大部分内容字符都是中文,毫无疑问目前为止在网页上最常用也是最通用的显示中文的字体是宋体,但是宋体在显示英文、数字和英文符号时过于糟糕 ,比如?字符,所以我们一般期望通过CSS来实现用更好的字体样式来显示它们,然后用宋体来显示中文和中文符号。之所以选择arial是因为:
tahoma
和helvetica
就没有这么幸运了。font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;
这是一个很不错的选择,但是你也会发现Google、YAHOO、Youtube、Bing甚至MSN的新版
都使用arial
作为第一默认字体。所以从美观和可读性上来讲arial
应该是完全可以接受的。font-family:arial,sans-serif;
,但是至少在非中文版的Win7下当编码是GBK时,IE8会因sans-serif
来渲染宋体,导致字体出现变形,这就是为什么淘宝需要在sans-serif
前加上宋体而Google无需这样做的原因。font-family:arial;
可以从侧面说明这样做的安全性。可能有人注意到Firefox中国版
默认显示的中文字体是微软雅黑,这是因为谋智网络擅自修改了用户自定义样式,不允许网页的样式覆盖浏览器设置的样式。也是由于类似的情况,我们要弹性设计网页非常重要。使用英文字体作为第一默认字体会导致的问题之一就是中英文以及符号混排时的对齐问题
、通过设置行高和hasLayout能解决绝大部分情况,但是都不会很完美,如果把字体改成“宋体”能彻底的解决问题。很明显,这个问题只出现在IE上。所以,如果你的网站很少使用英文、数字和英文符号,那么直接设置{font-family:\5b8b\4f53;}
也是很合理的选择。
font:13px/1.231 arial,helvetica,clean,sans-serif;
即字体大小默认值是13px,行高是13*1.231=16.003px,默认的行高是默认字体的1.231倍。对于中文来说,常用的字体大小12px、14px、16px、18px等偶数大小,在IE6和IE7设置其行高也为偶数能解决一些特殊情况下的字体对其问题。line-height
时,注意不要使用单位(包括%在内)
,因为子节点会继承经过运算后的line-height值,所以当使用单位后浏览器会把line-height
计算成第一次定义的绝对值,而不会随着字体大小的变化而变化,而无单位的数值表示是所在容器的font-size
的倍数,所以设置为无单位的数值是最佳选择。line-height
,值得一读。arial
,减少浏览器的查找时间。arial
基本上是名字最短的字体了,可以节约CSS的大小。{font-family:\5b8b\4f53;}
,使用微软雅黑是{font-family:\5fae\8f6f\96c5\9ed1;}
,这样的好处是避免编码问题,同时能得到所有的主流浏览器的支持。原文地址: 默认Web字体样式 @ 随网之舞
有兴趣的朋友还可以看一下另一篇针对该文进行补充的《再谈 Web 默认字体》