`

网页设计中的默认字体样式详解

 
阅读更多

浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置,这就导致如 果直接利用默认样式的页面在各个浏览器下显示非常不一致,于是就有了类似YUI的reset之类用来尽量重写浏览器的默认设置保证各个浏览器样式一致性的做法。

字体来说,各个浏览器默认的字体种类、字体大小和字体行高都不一样,比如IE8的中文版在Windows XP下显示网页时默认字体是宋体,而英文版肯定不会如此。所以我们需要统一设置默认的字体样式,以便实现一致的显示效果来保证设计的一致性和提高开发效率。

样式优先级

通常用户看到的页面的样式会受到三层控制:

  • 第一层是浏览器的默认样式
  • 第二层是网页定义样式
  • 第三层是用户自定义样式

CSS一样,后面的优先级 高于前面的,也就是说网页定义样式可以覆盖浏览器的默认样式,而用户自定义样式优先级最高。不过,当有 !important 时,网页样式可以覆盖用户自定义样式。用户!important > 网页!important > 用户 > 网页 > 浏览器默认

字体:arial

我们页面的绝大部分内容字符都是中文,毫无疑问目前为止在网页上最常用也是最通用的显示中文的字体是宋体,但是宋体在显示英文、数字和英文符号时过于糟糕,比如©字符,所以我们一般期望通过CSS来实现用更好的字体样式来显示它们,然后用宋体来显示中文和中文符号。之所以选择arial是因为:

  1. Windows和Mac都预装了这款字体,应该是使用最广泛的网页字体了。它的潜在对手tahomahelvetica就没有这么幸运了。
  2. 视觉设计的专业人士可能会认为在Windows中使用tahoma、在Mac中使用helvetica更好,比如淘宝的默认字体样式font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;
    这是一个很不错的选择,但是你也会发现Google、YAHOO、Youtube、Bing甚至MSN的新版都使用arial作为第一默认字体。所以从美观和可读性上来讲arial应该是完全可以接受的。
  3. 一般情况下设置font-family都会在最后设置通用字体族以保证其安全性,比如Google的设置为font-family:arial,sans-serif;,但是至少在非中文版的Win7下当编码是GBK时,IE8会因sans-serif来渲染宋体,导致字体出现变形,这就是为什么淘宝需要在sans-serif前加上宋体而Google无需这样做的原因。
  4. 因为中文字体的选择非常有限,所以目前所有的主流浏览器都设置使用宋体来显示中文。Baidu的首页和搜索结果页使用font-family:arial;可以从侧面说明这样做的安全性。可能有人注意到Firefox中国版默认显示的中文字体是微软雅黑,这是因为谋智网络擅自修改了用户自定义样式,不允许网页的样式覆盖浏览器设置的样式。也是由于类似的情况,我们要弹性设计网页非常重要。

使用英文字体作为第一默认字体会导致的问题之一就是中英文以及符号混排时的对齐问题、通过设置行高和hasLayout能解决绝大部分情况,但是都不会很完美,如果把字体改成“宋体”能彻底的解决问题。很明显,这个问题只出现在IE上。所以,如果你的网站很少使用英文、数字和英文符号,那么直接设置{font-family:\5b8b\4f53;}也是很合理的选择。

大小:12px

  1. 12px是宋体能显示的极限,虽然微软雅黑能显示更小的字体,但目前的应用环境尚未成熟。由于宋体基本上是目前显示中文唯一的通用Web字体,所以12px成为最常用的字体大小。我们当然可以依据产品的需要来修改这个默认值。
  2. 不用考虑基于字体大小(em)的设计
  3. 在Chrome3.0之后的中文版中,字体大小最小值是12px,比如你设置最小字体为10px,最后也变成12px。

行高:1.5倍

  1. 这是一个经验值,不同的产品对这个值要求可能不同,但我们一般会设置最常用的为默认值。比如YUI的font中是font:13px/1.231 arial,helvetica,clean,sans-serif;即字体大小默认值是13px,行高是13*1.231=16.003px,默认的行高是默认字体的1.231倍。对于中文来说,常用的字体大小12px、14px、16px、18px等偶数大小,在IE6和IE7设置其行高也为偶数能解决一些特殊情况下的字体对其问题。
  2. 在IE6和IE7中,行高值必须大于字体的2px才能保证字体的完整显示或当其作为链接时能有效显示下划线。
  3. 设置line-height时,注意不要使用单位(包括%在内),因为子节点会继承经过运算后的line-height值,所以当使用单位后浏览器会把line-height计算成第一次定义的绝对值,而不会随着字体大小的变化而变化,而无单位的数值表示是所在容器的font-size的倍数,所以设置为无单位的数值是最佳选择。
  4. 深入CSS 行高非常有利于理解line-height,值得一读。

性能和效率

  1. 大部分平台都有arial,减少浏览器的查找时间。
  2. 代码最少,书写方便。arial基本上是名字最短的字体了,可以节约CSS的大小。
  3. 所有的字母都小写,目前Google就是这样做的,好处是既可以编写更快也能提升Gzip压缩的效率
  4. 中文最好用unicode表示,比如使用宋体是{font-family:\5b8b\4f53;},使用微软雅黑是{font-family:\5fae\8f6f\96c5\9ed1;},这样的好处是避免编码问题,同时能得到所有的主流浏览器的支持。
  5. 使用正确的字体种类写法,避免使用引号,这样可以缩小CSS的大小。中文字体可以按上一条方式来编写。

未来

  1. 通过对中英文及符号混排的测试, 我发现微软雅黑其实表现相当不错,包括英文数字和英文字符以及在IE6和IE7的显示效果上,但唯一的遗憾是在XP下如果安装了微软雅黑字体的用户没有打 开“使用屏幕字体的边缘平滑”选项的话,在firefox、Safari和Opera、特别是IE6下会非常模糊难以辨认。针对这个问题目前并没有很好的 解决方案,所以只有等到IE6使用比率非常小的时候才可能正式的使用它。或许需要到2014年,XP死掉的时候。
  2. 虽然很早就有了@font-face,但是浏览器的支持、网速和商业问题,导致它很少被应用。最近关于字体的好消息是Firefox3.6将支持Web Open Font Forma。关于Web字体未来的相关信息可以看Web 字体的未来关于 Web 字体:现状与未来再谈 Web 字体的现状与未来

原文地址: 默认Web字体样式 @ 随网之舞
有兴趣的朋友还可以看一下另一篇针对该文进行补充的《再谈 Web 默认字体》

分享到:
评论

相关推荐

    CSS默认可继承样式详解

    常听说,颜色和字体是可继承的,盒模型样式是不可继承的,但其他样式呢?本文内容包括所有可继承的样式 常用可继承样式 CSS Code复制内容到剪贴板 color  cursor  direction  font  letter-spacing  line...

    css常用样式font设置字体的多种变换(实例详解)

    font-size控制字体大小,我们设置字体大小是设置它的宽度,它的高度一般电脑系统默认字体大小是16px,所以字体大小尽量不要低于16px,1em=16px; font-weight: bold;/*控制字重 一般是100-900 常用lighter(细体) ...

    iOS自定义字体设置和系统自带的字体详解

    有时候我们写app的时候不想使用默认的字体,我们会用到UI给我们设计好的字体,或者别的字体,那么我们改如何设置呢. 首先先看一下我自己导入的字体和苹果给我们自带的字体都有哪些吧. 看一下样式 首先说一下.我们如何...

    详解CSS中iconfont的使用

    我们都知道网页中的字体我们可以控制大小、样式、变形、拉伸、默认字体等属性,所以这个iconfont必须是以文字嵌入到样式中,所以想到的必须是font;既然是图标那么它就必须有一个路径来引入进来,首先我们一开始想到...

    详解node字体压缩插件font-spider的用法

    移动端默认显示系统默认字体,非系统默认字体需要自行引入字体包 字体包过大,字体包通常在几MB,严重拖累页面加载速度 分析: 文本内容为固定内容,不需要更新 文本内容大多为常用文字,大多文字用不上 插件: ...

    div+css有实例,易学易懂

    5.9 关于ul 和li 的样式详解 5.9.1 使用list-style-type 属 5.9.2 使用list-style-position 属性 5.9.3 使用list-style-image 属性 5.9.4 list-style 属性 5.10 菜单原理 5.10.1 菜单原理 5.10.2 制作菜单内容和结构...

    Android开发应用实战详解源代码

    3.6 样式修饰处理 3.7 按钮事件响应 3.8 页面间的转换 3.9 activity调用 3.10 多个activity间的数据传递 3.11 将数据返回到前一个activity 3.12 对话框交互处理 3.13 文字颜色置换 3.14 文字字体设置 3.15 拖动相片...

    css中的px、em、rem、pt 特点和区别及换算详解

    Windows系统默认是96dpi,Apple系统默认是72dpi。 2、em(相对长度单位,相对于当前对象内文本的字体尺寸):是一个相对长度单位,最初是指字母M的宽度,故名em。现指的是字符宽度的倍数,用法类似百分比,如:0.8em, ...

    css入门笔记

    独立于任何网页位置处,声明一个样式文件(.css为后缀),在文件中声明样式,在使用的网页中引入.css文件。 使用步骤: 1.创建样式表文件(.css) 2.在样式文件中编写样式规则 3.在网页中对样式文件进行引入 &lt...

    wyao:微信小程序入门四:框架详解(1):配置

    -app.json文件对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、tab等   1 { 2 "pages": [ //决定页面文件的... 7 "backgroundTextStyle": "light", //下拉背景字体、loading 图的样式

    超经典的Web前端与移动开发基础视频 Web前端基础开发视频教程 移动开发基础视频教程

    47前端开发基础视频-import导入CSS样式详解.avi 48前端开发基础视频-CSS语法及简单CSS属性.avi 49前端开发基础视频-CSS语法案例.avi 50前端开发基础视频-CSS注释.avi 51前端开发基础视频-标签选择器和通配符...

    Google Android SDK开发范例大全(第3版) 1/5

    8.23 WebView网页载入中、载入完成样版 8.24 通过内嵌Flash Player播放FLV电影 8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 ...

    Google Android SDK开发范例大全(第3版) 4/5

    8.23 WebView网页载入中、载入完成样版 8.24 通过内嵌Flash Player播放FLV电影 8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 ...

    Google Android SDK开发范例大全(第3版) 3/5

    8.23 WebView网页载入中、载入完成样版 8.24 通过内嵌Flash Player播放FLV电影 8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 ...

    Google Android SDK开发范例大全(第3版) 5/5

    8.23 WebView网页载入中、载入完成样版 8.24 通过内嵌Flash Player播放FLV电影 8.25 WebView网站Session Cookie判断与访问 8.26 文件下载管理器 8.27 手机Socket联机拨号服务器 第9章 Google服务与Android完美整合 ...

    IBM WebSphere Portal门户开发笔记01

    25、部署的PORTLET字体样式(或其他样式)受到BODY等大容器继承样式的影响 132 26、EJPAS0012E: 属性页面已启动(不带任何上下文信息) 133 27、详细内容页面展现的BODY内容间隙太大 134 28、修改默认应用编写模板 ...

    Colorful 明月浩空 V2.7

    4、面包屑导航,网页WEB字体图标,短代码,文章组件,评论框组件,彩色排行、标签 5、Pjax局部加载,Ajax评论无刷新多次提交,Ajax全文即时搜索,G头像缓存,动态Title标题 6、全站自响应图片预览,导航悬浮,滚动...

    arcgis工具

    arcgis工具总结 ...这种方法选择某一图层中包含另一图层中要素的要素。这种方法与完全包含(Completely contain)方法的区别在于:要素间的边界可以接触。例如,使用包含(Contain)方法,即使湖泊的边界和包含该...

Global site tag (gtag.js) - Google Analytics