`
wsj123
  • 浏览: 154383 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

CSS3 @font-face详解

    博客分类:
  • css
css 
阅读更多
CSS3 @font-face详解

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

相关推荐

    真正了解CSS3背景下的@font face规则

    # CSS3背景下的`@font-face`规则详解 在CSS3中,`@font-face`规则是一个强大的工具,它允许网页设计师引入自定义字体,从而提升网站的视觉效果和用户体验。`@font-face`并不仅仅用于创建字符小图标,它的功能远超于...

    css3系列教程(嵌入字体网络字体).rar

    CSS3引入了@font-face规则,允许开发者直接在网页中引用远程字体文件,使得用户无论操作系统如何,都能看到设计者期望的字体效果。这一特性极大地扩展了网页设计的可能,让设计师可以使用非标准字体,创造出独特的...

    详解如何在css中引入自定义字体(font-face)

    在现代网页设计中,如何在CSS中引入自定义字体(font-face)是一个非常实用的技术。使用@font-face规则,我们可以将设计师定制的字体嵌入到网站中,给网页带来独特、个性化的外观。随着CSS技术的演进,@font-face已经...

    多个 字体包 规则匹配!!

    通过对上述方案的具体分析和实践应用,我们可以看到利用CSS中的`@font-face`规则结合`font-weight`和`unicode-range`属性,能够有效地解决多个字体包的管理和匹配问题。这种方法不仅简化了前端开发的工作量,还极大...

    Web开发技巧详解与CSS特效应用

    深入探讨了Web安全字体的概念以及@font-face规则的实际运用流程,并提出了字体图标的概念与应用技巧。同时,解释了CSS精灵图的用途及其带来的优化优势。最终讨论了cursor属性的作用和不同设置下鼠标的光标表现形式。...

    css3-unfold-login-form.zip

    - **自定义字体和颜色**:CSS3支持Web字体(`@font-face`),可以使用自定义字体增强表单的视觉效果;同时,可以通过颜色变量和混合模式(`mix-blend-mode`)来创建独特的色彩搭配。 - **表单验证**:虽然不是CSS3的...

    CSS中@用法小结(示例详解)

    `@font-face`规则用于加载和定义自定义网络字体。例如: ```css @font-face { font-family: 'MyWebFont'; src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); } ``` 8. **@page...

    CSS3新特性1

    **CSS3新特性详解** CSS3作为Web设计领域的一个重要里程碑,引入了众多创新特性,极大地丰富了网页的视觉效果和交互性。以下是一些主要的CSS3新特性,包括但不限于2D和3D转换、过渡、动画以及多列布局等。 ### 1. ...

    css文件

    #### CSS @font-face 属性详解 `@font-face`规则允许网页使用开发者服务器上的字体,而无需依赖于访问者的系统字体。这对于确保设计的一致性和独特性至关重要。 ##### 语法: ```css @font-face { font-family: '...

    CSS3圆形环绕菜单动画特效

    **CSS3圆形环绕菜单动画特效详解** 在网页设计中,导航菜单是不可或缺的一部分,它为用户提供了一种方便快捷的方式去浏览网站的各个部分。随着技术的发展,CSS3引入了许多新的特性和功能,使得我们可以创建出更为...

    关于Cufon的页面字体渲染

    - **@font-face**:CSS3的@font-face规则可直接嵌入Web字体,但对旧版浏览器支持不佳。Cufón则作为其一种补充方案。 - **Web字体服务**:如Google Fonts、Adobe Typekit等,提供丰富的字体库,但可能涉及版权问题和...

    CSS样式表常用小技巧

    ### CSS样式表常用小技巧详解 #### 一、选择器优先级与兼容性问题 - **选择器优先级**:在CSS中,不同种类的选择器有不同的优先级。ID选择器的优先级高于类选择器(class),而类选择器又高于标签选择器。例如,在...

    css-effect-map-collection-master.zip

    《CSS效果图集合详解》 在网页设计与开发领域,CSS(Cascading Style Sheets)是一种不可或缺的语言,它用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的呈现。本篇文章将深入探讨名为"css-effect-map-...

    CSS3权威指南(第三版)

    ### CSS3权威指南(第三版)知识点概览 #### 一、CSS3简介与新特性 **CSS3**(Cascading Style Sheets Level 3)是CSS标准的最新版本之一,它为网页设计提供了更多的灵活性和创造力。相较于CSS2,CSS3引入了许多新的...

    CSS3教程 传智播客

    ### CSS3教程知识点详解 #### 一、CSS3概述 - **定义与作用**:CSS3(Cascading Style Sheets 3)是CSS(层叠样式表)的最新版本之一,用于控制网页的布局和样式设计,使得网页更加美观、交互性更强。 - **发展...

    css3参考手册

    CSS3增加了对更多字体的支持,如Web字体(`@font-face`),以及`text-shadow`创建文字阴影,`text-overflow`控制溢出文本的处理方式。 9. **颜色与透明度** CSS3引入了RGBA颜色模式,允许指定颜色的透明度,还有...

    CSS3经典使用手册

    ### CSS3经典使用手册知识点详解 #### 一、选择器 **1. 属性选择器** 属性选择器在CSS3中得到了进一步的扩展,增加了三种更灵活的选择方式: - `[att*=val]`:选择那些指定属性的值包含 `val` 的所有元素。 - `...

Global site tag (gtag.js) - Google Analytics