前言

过去,Web设计师为了保证网站能够正常显示,只能使用“Web安全字体”,即每台机器都预装的字体。但Web安全字体有时并不好看...

@font-face能够使得任何一台机器能够显示理想中的字体。

字体定义文件

这里我们只要知道有这些格式的字体文件即可,不用背下来。

  • ttf:True Type Font,Windows里面一般都是这种格式的,【控制面板】->【字体】可以查看系统自带字体。
  • otf:Open Type Font
  • eot:Embeded Open Type, IE仅支持该字体。
  • woff:Web Open Font Format。
  • svg:基于SVG渲染的字体。

@font-face

定义字体

@font-face {

font-family: <name>;
      src: <source> [<format>][,<source> [<format>]]*;
      [font-weight: <weight>];
      [font-style: <style>];
}

  • <name>:设置自定义字体的名称,使用字体时引用该名称即可。
  • <source>:定义字体定义文件的路径。
  • <format>:帮助浏览器识别字体格式。
  • <weight>和<style>在CSS中已经介绍过。

使用字体

font-family: <name>;

@font-face 规则模板

@font-face {
font-family: 'bradley_hand_itcregular';
src: url('bradhitc-webfont.eot'); /* IE9 Compat Modes */
src: url('bradhitc-webfont.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('bradhitc-webfont.woff') format('woff'), /* Modern Browsers */
url('bradhitc-webfont.ttf') format('truetype'), /* Safari, Android, iOS */
url('bradhitc-webfont.svg#bradley_hand_itcregular') format('svg'); /* Legacy iOS */
font-weight: normal;
font-style: normal;
}

Google Fonts

  • 虽然CSS3支持自定义字体(将ttf等字体文件放在工程目录下,然后使用@font-face引入),但是目前我比较推荐的方法是使用Google Web Fonts 来使用额外的字体。
  • Google Web Fonts 可以看做是一个字体数据库,他虽然内部也使用了@font-face 规则定义字体,但是用户不需要直接接触到 @font-face,只需要简单一步即可使用。
  • 比如我们想使用 Open Sans 这个字体,则只需要:
    • 引入:

      <link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
    • 使用:
      font-family: 'Open Sans', sans-serif;  

Dafont

  • 主页:http://www.dafont.com/
  • 一个字体库,如果要使用,则你需要下载该文件(ttf格式),并安装或使用@font-face引入。(但一般我们先使用 Font Sqluirrel 转换)

Font Squirrel

  • 特别注意:下载的rar包中的stylesheet.css里面就已经定义了你的@font-face规则,你可以不用自己写,直接复制黏贴到项目中去。
  • 因此通常的流程:在Dafont.com中下载ttf文件,使用Font Squirrel转换。

CSS3:@font-face规则的更多相关文章

  1. [转]真正了解CSS3背景下的@font face规则

    本文转自:http://www.zhangxinxu.com/wordpress/2017/03/css3-font-face-src-local/ by zhangxinxu from http:/ ...

  2. css font简写规则

    是不是在很很多网站的公共样式中会看到这样的代码?font: 12px/150% Arial, Verdana, "\5b8b\4f53";意思为:字体大小/行高 字体族 " ...

  3. IT兄弟连 HTML5教程 CSS3揭秘 CSS规则的组成

    CSS和HTML一样都是由W3C制定的标准,本章中介绍的特性和功能还是来源于CSS1和CSS2(CSS2是根据CSS1扩展的).W3C也有新的版本更新,称为CSS3.虽然浏览器已经准备开始实现CSS3 ...

  4. CSS3高性能动画

    CSS动画属性会触发整个页面的重排relayout.重绘repaint.重组recomposite Paint通常是其中最花费性能的,尽可能避免使用触发paint的CSS动画属性,在CSS动画中使用w ...

  5. CSS自学笔记(12):CSS3文字特效

    在CSS3中新增了多个文本属性,同样有了这些属性我们在进行问题特效处理时,就尽可能少的用到其他软件去制作特效文字了. 在以前使用CSS进行web开发的时候,必须使用计算机上安装好的字体,如果有些用户的 ...

  6. CSS3+HTML5特效7 - 特殊的 Loading 效果

    效果如下     实现原理: 利用CSS3的@keyframes规则创建动画效果: 使用CSS3的animation效果完成滚动切换. 代码说明: 样式表中@-webkit-keyframes及@ke ...

  7. CSS3+HTML5特效4 - 横向无缝滚动

    先看例子 This is a test 1. This is a test 2. This is a test 3. This is a test 4. This is a test 5. This ...

  8. CSS3+HTML5特效3 - 纵向无缝滚动

    老惯例,先看例子. This is a test 1. This is a test 2. This is a test 3. This is a test 4. This is a test 5. ...

  9. 个人练习:使用HTML+CSS3制作图片轮播功能(不使用JavaScript)

    先上效果图,不要在意用来当素材的图片: 在搜索相关资料的时候,查到有两种实现方式:一是使用JavaScript,二是使用CSS3中的Animation(动画),这里使用的是CSS3中的Animatio ...

随机推荐

  1. RE合同记账会计凭证

    *&---------------------------------------------------------------------* *& Title : 不动产转租合同自 ...

  2. des/3des

    一.python 1. des3 python平台的DES3 + base64 加密解密, 有两个常用的库pycrypto和pyDes 1)pycrypto des3.py #coding=utf-8 ...

  3. 百度NLP二面

    实验室项目:1.实验室方向 2.用两分钟介绍自己的项目,创新点在哪里 个人项目:     1.自己实现的贝叶斯分类器,目的,怎么做的 2.怎么计算各个分类的先验.(因为我使用的训练预料是每个分类10篇 ...

  4. 这样才能使本地Mysql服务允许被外部主机连接(两步)

    网上的N多方法都不全面,只有下面的第一步或第二步是不行的,必须同时执行下面两步操作: 修改mysql.user表 以root或debian-sys-maint身份登录mysql $ mysql -u ...

  5. Python(异常处理)

    一 错误和异常 程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误(逻辑错误) 什么是异常 异常就是程序运行时发 ...

  6. 学习完成CSS布局(左右浮动)

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  7. Druid出现DruidDataSource - recyle error - recyle error java.lang.InterruptedException: null异常排查与解决

    一.问题回顾 线上的代码之前运行的都很平稳,突然就出现了一个很奇怪的问题,看错误信息是第三方框架Druid报出来了,连接池回收连接时出现的问题. 2018-05-14 20:01:32.810 ERR ...

  8. javascript 理解对象--- 定义多个属性和读取属性的特性

    一 定义多个属性 ECMAScript5 定义了一个Object.defineProperties()方法,用于定义多个属性.此方法接受两个对象参数: 第一个对象:要添加或修改其属性的对象 第二个对象 ...

  9. EF Core 2.0中怎么用DB First通过数据库来生成实体

    要在EF Core使用DB First首先要下载三个Nuget包,在Nuget的Package Manager Console窗口中依次敲入下面三个命令即可: Microsoft.EntityFram ...

  10. C++之图片旋转90,再保存

    下面测试代码只需要全部放在一个.cpp文件里就行 //#include "stdafx.h"#include <stdio.h>#include <string& ...