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`规则是一个强大的工具,它允许网页设计师引入自定义字体,从而提升网站的视觉效果和用户体验。`@font-face`并不仅仅用于创建字符小图标,它的功能远超于...
CSS3引入了@font-face规则,允许开发者直接在网页中引用远程字体文件,使得用户无论操作系统如何,都能看到设计者期望的字体效果。这一特性极大地扩展了网页设计的可能,让设计师可以使用非标准字体,创造出独特的...
在现代网页设计中,如何在CSS中引入自定义字体(font-face)是一个非常实用的技术。使用@font-face规则,我们可以将设计师定制的字体嵌入到网站中,给网页带来独特、个性化的外观。随着CSS技术的演进,@font-face已经...
通过对上述方案的具体分析和实践应用,我们可以看到利用CSS中的`@font-face`规则结合`font-weight`和`unicode-range`属性,能够有效地解决多个字体包的管理和匹配问题。这种方法不仅简化了前端开发的工作量,还极大...
深入探讨了Web安全字体的概念以及@font-face规则的实际运用流程,并提出了字体图标的概念与应用技巧。同时,解释了CSS精灵图的用途及其带来的优化优势。最终讨论了cursor属性的作用和不同设置下鼠标的光标表现形式。...
- **自定义字体和颜色**:CSS3支持Web字体(`@font-face`),可以使用自定义字体增强表单的视觉效果;同时,可以通过颜色变量和混合模式(`mix-blend-mode`)来创建独特的色彩搭配。 - **表单验证**:虽然不是CSS3的...
`@font-face`规则用于加载和定义自定义网络字体。例如: ```css @font-face { font-family: 'MyWebFont'; src: url('myfont.woff2') format('woff2'), url('myfont.woff') format('woff'); } ``` 8. **@page...
**CSS3新特性详解** CSS3作为Web设计领域的一个重要里程碑,引入了众多创新特性,极大地丰富了网页的视觉效果和交互性。以下是一些主要的CSS3新特性,包括但不限于2D和3D转换、过渡、动画以及多列布局等。 ### 1. ...
#### CSS @font-face 属性详解 `@font-face`规则允许网页使用开发者服务器上的字体,而无需依赖于访问者的系统字体。这对于确保设计的一致性和独特性至关重要。 ##### 语法: ```css @font-face { font-family: '...
**CSS3圆形环绕菜单动画特效详解** 在网页设计中,导航菜单是不可或缺的一部分,它为用户提供了一种方便快捷的方式去浏览网站的各个部分。随着技术的发展,CSS3引入了许多新的特性和功能,使得我们可以创建出更为...
- **@font-face**:CSS3的@font-face规则可直接嵌入Web字体,但对旧版浏览器支持不佳。Cufón则作为其一种补充方案。 - **Web字体服务**:如Google Fonts、Adobe Typekit等,提供丰富的字体库,但可能涉及版权问题和...
### CSS样式表常用小技巧详解 #### 一、选择器优先级与兼容性问题 - **选择器优先级**:在CSS中,不同种类的选择器有不同的优先级。ID选择器的优先级高于类选择器(class),而类选择器又高于标签选择器。例如,在...
《CSS效果图集合详解》 在网页设计与开发领域,CSS(Cascading Style Sheets)是一种不可或缺的语言,它用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档的呈现。本篇文章将深入探讨名为"css-effect-map-...
### CSS3权威指南(第三版)知识点概览 #### 一、CSS3简介与新特性 **CSS3**(Cascading Style Sheets Level 3)是CSS标准的最新版本之一,它为网页设计提供了更多的灵活性和创造力。相较于CSS2,CSS3引入了许多新的...
### CSS3教程知识点详解 #### 一、CSS3概述 - **定义与作用**:CSS3(Cascading Style Sheets 3)是CSS(层叠样式表)的最新版本之一,用于控制网页的布局和样式设计,使得网页更加美观、交互性更强。 - **发展...
CSS3增加了对更多字体的支持,如Web字体(`@font-face`),以及`text-shadow`创建文字阴影,`text-overflow`控制溢出文本的处理方式。 9. **颜色与透明度** CSS3引入了RGBA颜色模式,允许指定颜色的透明度,还有...
### CSS3经典使用手册知识点详解 #### 一、选择器 **1. 属性选择器** 属性选择器在CSS3中得到了进一步的扩展,增加了三种更灵活的选择方式: - `[att*=val]`:选择那些指定属性的值包含 `val` 的所有元素。 - `...