默认Web字体样式
作者:秦歌 来源:随网之舞 发布时间:2009-11-24 12:37:00
通常用户看到的页面的样式会受到三层控制,第一层是浏览器的默认样式,第二层是网页定义样式,第三层是用户自定义样式。和CSS一样,后面的优先级高于前面的,也就是说网页定义样式可以覆盖浏览器的默认样式,而用户自定义样式优先级最高。实际情况是虽然浏览器都或多或少提供了用户自定义样式的功能,但是极少数会有用户去自定义,一般用也是高级用户。而浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置,这就导致如果直接利用默认样式的页面在各个浏览器下显示非常不一致,于是就有了类似YUI的reset之类用来尽量重写浏览器的默认设置保证各个浏览器样式一致性的做法。
拿字体来说,各个浏览器默认的字体种类、字体大小和字体行高都不一样,比如IE8的中文版在Windows XP下显示网页时默认字体是宋体,而英文版肯定不会如此。所以我们需要统一设置默认的字体样式,以便实现一致的显示效果来保证设计的一致性和提高开发效率。
以后准备使用如下默认字体样式:
body{ font: 12px/1.5 arial;}
字体:arial
我们页面的绝大部分内容字符都是中文,毫无疑问目前为止在网页上最常用也是最通用的显示中文的字体是宋体,但是宋体在显示英文、数字和英文符号时过于糟糕,比如©字符,所以我们一般期望通过CSS来实现用更好的字体样式来显示它们,然后用宋体来显示中文和中文符号。之所以选择arial是因为:
Windows和Mac都预装了这款字体,应该是使用最广泛的网页字体了。它的潜在对手
tahoma
和helvetica
就没有这么幸运了。视觉设计的专业人士可能会认为在Windows中使用tahoma、在Mac中使用helvetica更好,比如淘宝的默认字体样式是
font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;
这是一个很不错的选择,但是你也会发现Google、YAHOO、Youtube、Bing甚至MSN的新版都使用arial
作为第一默认字体。所以从美观和可读性上来讲arial
应该是完全可以接受的。一般情况下设置font-family都会在最后设置通用字体族以保证其安全性,比如Google的设置为
font-family:arial,sans-serif;
,但是至少在非中文版的Win7下当编码是GBK时,IE8会因sans-serif
来渲染宋体,导致字体出现变形,这就是为什么淘宝需要在sans-serif
前加上宋体而Google无需这样做的原因。因为中文字体的选择非常有限,所以目前所有的主流浏览器都设置使用宋体来显示中文。Baidu的首页和搜索结果页使用
font-family:arial;
可以从侧面说明这样做的安全性。可能有人注意到Firefox中国版默认显示的中文字体是微软雅黑,这是因为谋智网络擅自修改了用户自定义样式,不允许网页的样式覆盖浏览器设置的样式。也是由于类似的情况,我们要弹性设计网页非常重要。
使用英文字体作为第一默认字体会导致的问题之一就是中英文以及符号混排时的对齐问题、通过设置行高和hasLayout能解决绝大部分情况,但是都不会很完美,如果把字体改成“宋体”能彻底的解决问题。很明显,这个问题只出现在IE上。所以,如果你的网站很少使用英文、数字和英文符号,那么直接设置{font-family:\5b8b\4f53;}
也是很合理的选择。


猜你喜欢
- 项目场景:在使用selenium模块进行数据爬取时,通常会遇到爬取iframe中的内容。会因为定位的作用域问题爬取不到数据。问题描述:我们以
- 安装wxpypip install -U wxpy登录微信# 导入模块from wxpy import *# 初始化机器人,扫码登陆bot
- 前言我们已经配置完Django,今天就来学学静态文件与模板的放置使用。模板在上一章节中我们的视图函数test使用了HttpResponse返
- 虽然我们一直使用书籍搜索的示例表单,并将起改进的很完美,但是这还是相当的简陋: 只包含一个字段,q。这简单的例子,我们不需要使用Django
- PHP bin2hex() 函数实例把 "Hello World!" 转换为十六进制值:<?php $str =
- 引言django提供了一个默认的auth系统用于用户的登录和授权,并提供了一定的扩展性,允许开发者自行定义多个验证后台,每个验证后台必须实现
- 目前很多网站都使用ajax技术动态加载数据,和常规的网站不一样,数据时动态加载的,如果我们使用常规的方法爬取网页,得到的只是一堆html代码
- 终极版终于有时间给大家分享了!!!。我们先看一下效果图。1:登录界面:2:查询数据库所有的内容!3:链接数据库:4:最终的打包!话不多说直接
- 导语在大多数开发需求中,我们有时需要将某个数据,或者某个函数方法,挂载到,全局实例身上,以便于,在项目全局的任何位置都能够调用其方法,或读取
- vue3给数组赋值丢失响应式的解决由于vue3使用proxy,对于对象和数组都不能直接整个赋值。只有push或者根据索引遍历赋值才可以保留r
- 代码如下:use tempdb if object_id('tempdb..#table') is not null dro
- Display SQL Server Login Mode. Supported Plat
- 1、表示乘号2、表示倍数,例如:def T(msg,time=1): print((msg+' ')*time)
- 在PyCharm 里,显示行号有两种办法:1,临时设置。右键单击行号处,选择 Show Line Numbers。但是这种方法,只对一个文件
- 1、引言小 * 丝:鱼哥,最近有点不像话了。小鱼:嗯?? 啥个意思嘛~小 * 丝:一周了,没分享小知识了。小鱼:就因为这个??小 * 丝:那是,我这么爱
- 在学习与运用ASP中,response对象涉及到的方面也比较多,想全部都掌握也并非一两天的事,我也是最近才发现response对象中居然有这
- INSERT INTO Table (TestCol) VALUES(‘')其中的TestCol字段,其实在设计的时候,已经被设计为
- 最简单的CGO程序//cgo.gopackage mainimport "C"func main(){ &nb
- 本文为大家解析了python实现4名牌手洗牌发牌的问题,供大家参考,具体内容如下编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)
- 最近使用pytorch时,需要用到一个预训练好的人脸识别模型提取人脸ID特征,想到很多人都在用用vgg-face,但是vgg-face没有p