@font-face使用

转自http://www.tuicool.com/articles/QVf6nei

一、webfont与@font-face

什么是webfont

web font,又称之为 在线字体 或者 网络字体 ,是CSS3中的一个模块,主要是把自定义的特殊字体嵌入到网页中。无需安装,无需下载,直接在线使用。

@font-face语法

web font技术需要通过CSS的 @font-face 语句引入在线字体。

@font-css是CSS3中的一个模块,通过它可以将自定义的字体嵌入到前端网页中。随着@font-face的出现,标识着我们在web开发的过程中可以使用除了web安全字体之外的自定义字体,使页面的展现更加多样化。

值得一提的是,@font-face这个CSS3模块早在IE4中就已经被支持了。

@font-face {
    font-family: <your-webfont-name>;
    src: <source> <format> [, <source> <format>];
    [font-weight: <weight>;]
    [font-style: <style>;]
}

值得注意的有两点,一个是 font-family 属性,一个是 src 属性。前者是自定义webfont的名字,后者是引用字体的路径。其中 src 中 <format> 字段是用来标识字体格式帮助浏览器识别。常见字体格式及format如下图,

format说明

浏览器对各字体格式的支持如下

下面让我们来一段具体的CSS代码,了解下这个@font-face到底是如何定义的。

@font-face {
    font-family: ‘icomoon‘;
    src:url(‘fonts/icomoon.eot?‘); /* 兼容IE9以上 */
    src:url(‘fonts/icomoon.eot?#iefix‘) format(‘embedded-opentype‘), /*兼容IE8以下*/
        url(‘fonts/icomoon.woff‘) format(‘woff‘),
        url(‘fonts/icomoon.ttf‘) format(‘truetype‘),
        url(‘fonts/icomoon.svg‘) format(‘svg‘);
    font-weight: normal;
    font-style: normal;
}

这样我们自定义的web font就成功了。然后就可以在页面中正常使用了。比如,

div.title {
    font-family: ‘icomoon‘
}

自定义字体

说到这里,如果大家自己动手实验一番的话,就会发现一个致命问题: 我去哪里获得这些自定义字体啊?

目前有三种途径来获取这些字体,

  • 去免费的网站下载字体
  • 去收费的网站购买字体使用授权
  • 有设计背景,自己设计字体

字体图标

使用现有的免费字体图标

有一个好用的 html5应用 。通过此应用你可以选择IcoMoon提供的免费或者购买收费图标,然后生成字体。

下载得到生成好的字体后,它会帮我们生成好css代码,如下,

@font-face {
    font-family: ‘icomoon‘;
    src:url(‘fonts/icomoon.eot?-rah7ee‘);
    src:url(‘fonts/icomoon.eot?#iefix-rah7ee‘) format(‘embedded-opentype‘),
        url(‘fonts/icomoon.woff?-rah7ee‘) format(‘woff‘),
        url(‘fonts/icomoon.ttf?-rah7ee‘) format(‘truetype‘),
        url(‘fonts/icomoon.svg?-rah7ee#icomoon‘) format(‘svg‘);
    font-weight: normal;
    font-style: normal;
}
.icon {
    font-family: ‘icomoon‘;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.icon-home3:before {
    content: "\e600";
}
.icon-office:before {
    content: "\e601";
}
.icon-newspaper:before {
    content: "\e602";
}
.icon-pencil:before {
    content: "\e603";
}

使用字体图标的两种方式:

HTML实体+webfont

css样式+webfont

.icon {
    font-family: ‘icomoon‘;
    speak: none;
    font-style: normal;
    font-weight: normal;
    font-variant: normal;
    text-transform: none;
    line-height: 1;
    /* Better Font Rendering =========== */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.icon-home3:before {
    content: "\e600";
}
.icon-office:before {
    content: "\e601";
}
.icon-newspaper:before {
    content: "\e602";
}
.icon-pencil:before {
    content: "\e603";
}

HTML代码:

<li>
    <a href="#"><i class="icon icon-home3"></i>主页</a>
    <a href="#"><i class="icon icon-office"></i>归档</a>
</li>

可见,这种方式不再需要在html代码中书写相应的html实体,因为我们给相关元素添加了伪元素,将html实体转移到了伪元素中。

这里额外提一点,为何 天猫 的html页面中使用的是html实体+font而不是css样式+font?这其实是考虑了低版本浏览器的兼容性。因为部分(低版本的)浏览器还不支持css伪元素,但是html实体一定是支持的。

对比

到现在为止,我们已经有了2种(严格来说,是3种)来制作和使用网页icon小图标,

  • 图片 + css sprite
  • webfont + html实体
  • webfont + css样式

三者的对比如下图,

总得来说,前者是操作图片,后两者操作icon小图标就跟操作字体是一样的。比如,我想缩放图标,直接修改 font-size 即可;我想修改颜色,直接修改 color 即可。除了这些简单的变化,还可以灵活的添加描边、阴影等。

不过webfont的图标色彩单一(最多也就只能做出渐变),而图片则色彩丰富。

时间: 2024-10-10 21:49:55

@font-face使用的相关文章

Bootstrap &amp; Font Awesome 学习笔记

学习网站:http://bootstrap.ninghao.net/index.html https://www.freecodecamp.cn http://www.runoob.com/bootstrap/bootstrap-tutorial.html Bootstrap 为快速简单的实施 Web 开发准备的前端架构. Bootstrap将会根据你的屏幕的大小来调整HTML元素的大小 -- 强调 响应式设计的概念. 通过响应式设计,你无需再为你的网站设计一个手机版的.它在任何尺寸的屏幕上看起

awt.font在centos上中文乱码的问题

现在有需求生成一个二维码,并且有一段文本说明,但是使用awt.font来生成中文时,一直存在乱码的问题.网上的解决办法有几种,但是在centos上亲测有用的就是如下的方法. Java代码如下:new java.awt.Font("宋体",Font.BOLD,13); 1,从windows上拷贝simsun.ttc宋体文件(有的说改后缀为ttf,没有试),拷贝到/usr/share/fonts下,可以新建一个文件夹,比如我创建的是chinese,即路径为/user/share/fonts

font not embeded

转自:http://blog.csdn.net/chenyusiyuan/article/details/4078671,感谢分享! 装了半天adobe acrobat distiller 要泪崩,解决问题还是要找对出错关键地方啊~~~?? 今天投稿一个IEEE会议时遇到了一个不大不小的问题,在指定的论文提交网站进行格式检查(PDF Test)时,总是在字体嵌入那一项提示错误: Font embedding Fonts that are not embedded may be rendered

【codecademy summary】html+css font

The default typeface for all HTML elements is TImes New Roman. exmaple as use of font typeface:  font-family: "Courier New"; Two different typefaces of types as: 1.Serif - traditionally used in print designs, as they have been considered easier

让Flying saucer支持font定义

在wangEditor里给某段字体加上颜色后,在生成的PDF里无法体现出来,只好打开flying saucer的源码debug,发现XhtmlNamespaceHandler类中没有对font元素的处理,于是依样画瓢: public String getNonCssStyling(Element e) { if (e.getNodeName().equals("table")) { return applyTableStyles(e); } else if (e.getNodeName

1 background(复合属性)与font(复合属性) 2 行内块的间距问题 3 行内元素的margin 4 清除浮动 5定位的元素的层级 6 Border-radius: 边框半径

1 background(复合属性)与font(复合属性): background: 颜色  图片的链接  是否平铺  背景位置 是否滚动.(可以随意调动或省略) Font: 粗度 字体风格 字体大小/行高 字体样式 字体大小和样式不可省略 2 行内块的间距问题 行内块元素相邻时,行内块元素之间会有几像素的间距,只有通过浮动解决. 3 行内元素的margin 行内元素的上下外边距不起作用,左右起作用. 4 清除浮动 给父盒子设置一个高度     Clear: both      Overflow

关于移动端的font的大小问题

一.font-family 使用无衬线字体 body { font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif; } iOS 4.0+ 使用英文字体 Helvetica Neue,之前的iOS版本降级使用 Helvetica 中文字体设置为华文黑体STHeiTi 默认数字字体是Helvetica Neue 需补充说明,华文黑体并不存在iOS的字体库中(http://support.apple.com/kb/HT587

font:12px/1.5 tahoma, arial, \5b8b\4f53, sans-serif详解

在phpcms v9的样式表文件reset.css中有如下一段样式,具体什么意思?代码如下:body,html,input{font:12px/1.5 tahoma,arial,\5b8b\4f53,sans-serif;} 解释:这是css中font的简写写法.字体:字体大小/字体行高 字体格式. 详写如下:body,html,input{font: 12px;line-height: 1.5;font-family: tahoma,arial,\5b8b\4f53,sans-serif;}

如何将 Font Awesome 转成 PNG 图标 详细教程 含源代码

最近因为项目上需要用到这个字体图标,但是它里面的许多也不能完全满足项目需要,因此就考虑将这个图标导出,然后自己再添加一些其他图标使用 搜索了些解决方案,如:http://www.oschina.net/translate/how-to-convert-font-awesome-to-png-icons,但是上面的步骤过于简单,一个新手完全不会使用,比如Python自己就一点都没接触过,因此自己走了许多弯路. 本文一方面记录以便以后自己再次使用,最重要的是将我自己的每个步骤详细的展现给有需要的大家

字体图标 Icon font

Icon font Icon font 指的是用字体文件取代图片文件,来展示图标.特殊字体等元素的方法. 应用场景: Icon Font的优缺点 大小可以自由地变化 颜色可以自由地修改 添加阴影效果 *IE6也可以支持 支持一些CSS3对文字的效果 字体文件比图片文件小很多 由于是字体,所以只可以显示纯色图片,不支持多种颜色的图片(缺点) 资源: 阿里icon font字库 这个是阿里妈妈M2UX的一个icon font字体图标字库,包含了淘宝图标库和阿里妈妈图标库. fontello 在线定制