CSS3 @font-face详解

[align=center][size=x-large]CSS3 @font-face详解[/size][/align]
[b]1.1概述[/b]
@font-face是CSS3中的一个模块,主要是把自己定义的Web字体嵌入到网页中。
[b]1.2语法规则[/b]
语法:
@font-face {
font-family: <yourWebFontName>;
src: <source> [<format>][,<source> [<format>]]*;
[font-weight: <weight>];
[font-style: <style>];
}
参数说明:
yourWebFontName参数,是指自定义的字体名称。
source参数,是指自定义字体的存放路径,可以是相对路径也可以是绝路径。
format参数,是指自定义的字体的格式,主要用来帮助浏览器识别,其值主要有以下几种类型:truetype,opentype,truetype-aat,embedded-opentype,avg等。
[b]1.3对浏览器的兼容性[/b]
不同的浏览器对文字格式的支持是不一样的,所以要达到更多种浏览版本的支持,至少需要.woff,.eot两种格式字体,甚至还需要.svg等格式的字体。
为了使@font-face达到更多的浏览器支持,Paul Irish写了一个独特的@font-face语法叫Bulletproof @font-face:
@font-face {
font-family: 'YourWebFontName';
src: url('YourWebFontName.eot?') format('eot');[color=green]/*IE*/[/color]
src:url('YourWebFontName.woff') format('woff'),
url('YourWebFontName.ttf') format('truetype');[color=green]/*non-IE*/[/color]
}
但为了让各多的浏览器支持,也可以写成:
@font-face {
font-family: 'YourWebFontName';
src: url('YourWebFontName.eot'); [color=green]/* IE9 Compat Modes */[/color]
src: url('YourWebFontName.eot?#iefix') format('embedded-opentype'), [color=green]/* IE6-IE8 */[/color]
url('YourWebFontName.woff') format('woff'),[color=green] /* Modern Browsers */[/color]
url('YourWebFontName.ttf') format('truetype'),[color=green] /* Safari, Android, iOS */[/color]
url('YourWebFontName.svg#YourWebFontName') format('svg'); [color=green]/* Legacy iOS */[/color]
}
兼容性处理介绍如下:
在标准浏览器中,src属性支持后面跟着多个url,不同的浏览器会选择适合自己的字体;但是IE9之前的浏览器并不支持,当 src属性包含多个url时,它无法正确的解析而返回404错误,于是把仅IE9之前支持的EOT格式放在第一位,然后在url后加上 ?,这样 IE9之前的版本会把问号之后的内容当作 url 的参数;#iefix的作用,一是起到了注释功能,二是可以将url参数变为锚点,减少发送给服务器的字符。
在上面的代码中,有两个src属性,通常只写下面的一个即可,第一个是为了支持IE9下的兼容模式(也就是IE9浏览器下使用IE7或者IE8默认渲染页面);由于在兼容模式下,浏览器对自定义字体的解析模式发生了变化,使用第一条中问号的方式已经失效,解决方案就是添加一个src: url(' YourWebFontName.eot')。
[b]1.4实例详解[/b]
HTML代码:
<h2 class="style"> I Love You</h2>
CSS代码:
通过@font-face来定义自己的Web Font:
@font-face {
font-family: 'SingleMalta';
src: url('../font/SingleMalta/SingleMalta.eot');[color=green] /* IE9 Compat Modes */[/color]
src: url('../font/SingleMalta/SingleMalta.eot?#iefix') format('embedded-opentype'), [color=green]/* IE6-IE8 *[/color]/
url('../font/SingleMalta/SingleMalta.woff') format('woff'), [color=green]/* Modern Browsers */[/color]
url('../font/SingleMalta/SingleMalta.ttf') format('truetype'), [color=green]/* Safari, Android, iOS */[/color]
url('../font/SingleMalta/SingleMalta.svg#SingleMalta') format('svg');[color=green] /* Legacy iOS */[/color]
font-weight:normal;
font-style:normal;
[color=green]/*引用方式为相对路径*/[/color]
}
把定义好的字体应用到实际页面中去:
h2.style {
font-family: 'SingleMalta';/* SingleMalta是一种英文字体*/
}
[b]1.5注意事项[/b]
如果项目是英文网站,而且项目中的Logo,Tags等应用到较多的这种特殊字体效果,建议你不要使用图片效果,而使用@font-face,但如果是中文网站,还是使用图片比较合适,因为加载英文字体和图片没有多大区别,但是加载中文字体,那就不一样了,因为中文字体太大了,这样会影响到项目的某些性能的优化。
致命的错误,在定义@font-face时,文件路径没有载对。
只定义了@font-face,但并没有应用到项目中的DOM元素上。
[b]1.6字体格式在线转换工具推荐[/b]
https://onlinefontconverter.com
[b]1.4扩展应用——简化代码[/b]
如果一个字体不是全局的,每次用到的时候则都要写一遍,这样便很烦。但可以借助@font-face这种原生的特性来简化代码,如下:
@font-face {
font-family: YH;
src: local("microsoft yahei");[color=green]/*local()表是从本地系统查找字体,如果找不到,再从url()指定的查找*/[/color]
}
然后,接下来要使用微软雅黑字体的字体,就可使用简化字符来设置字体:
.font {
font-family: YH;
}
iMac等苹果机子上默认没有微软雅黑字体,但要求Mac OS X系统上使用苹方字体,window系统上使用微软雅黑字体。要实现上述要求,可以借助@font-face,如下:
@font-face {
font-family: BASE;
src: local('PingFang SC'),
local("Microsoft Yahei");
}
然后,直接使用:
.font {
font-family: BASE;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值