内容简介:我们在前端开发当中经常使用font-awesome和iconfont等字体图标,今天来说一说字体图标的原理。当浏览器接受HTML文件开始渲染的时候,文档树中的文本都会被转化成对应的unicode编码,然后根据我们设置的font-family到系统中找到对应的字体,再将unicode码渲染成对应的字体样式。如果没有找到或者我们没有设置font-family,那么浏览器就会选择自己默认的字体来渲染。比如我们把有了上面的渲染过程,字体图标的制作就很简单了。
前言
我们在前端开发当中经常使用font-awesome和iconfont等字体图标,今天来说一说字体图标的原理。
浏览器是如何渲染字体的
当浏览器接受HTML文件开始渲染的时候,文档树中的文本都会被转化成对应的unicode编码,然后根据我们设置的font-family到系统中找到对应的字体,再将unicode码渲染成对应的字体样式。如果没有找到或者我们没有设置font-family,那么浏览器就会选择自己默认的字体来渲染。比如我们把 前端开发
四个字转成unicode是 0x524D 0x7AEF 0x5F00 0x53D1
,在HTML中表示Unicode编码用 �
的形式,我们把前面的四个Unicode转成该形式写入html文件中,可以发现依然可以解析的。
字体图标原理
有了上面的渲染过程,字体图标的制作就很简单了。
1. 制作字体文件
2. font-face引入字体文件(可以使用本地连接和第三方链接)
3. 使用font-family(HTML实体或者伪元素 :before
)
我们目前接触的字体图标包括 iconfont fontAwesom
都是这样的原理,用font-face引入自定义的字体文件,然后对要应用字体的元素约束自定义的 font-family
,最后用伪元素 :before
的content来给定元素的unicode码来设置对应的图标,其实如果我们不用伪元素,直接在元素中输入字符unicode码对应的HTML实体(HTML entity)也可以实现效果, <span class="iconfont icon-alipay"></span>
也可以写成 <span class="iconfont"></span>
,效果一样。
@font-face {font-family: "iconfont"; src: url('//at.alicdn.com/t/font_958524_6v80ih0o45k.eot?t=1544418917327'); /* IE9*/ src: url('//at.alicdn.com/t/font_958524_6v80ih0o45k.eot?t=1544418917327#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('//at.alicdn.com/t/font_958524_6v80ih0o45k.ttf?t=1544418917327') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ url('//at.alicdn.com/t/font_958524_6v80ih0o45k.svg?t=1544418917327#iconfont') format('svg'); /* iOS 4.1- */ } .iconfont { font-family:"iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .icon-alipay:before { content: "\e63b"; } .icon-wechat:before { content: "\e658"; } .icon-qq:before { content: "\e603"; }
其他实现方法
实现图标的还有其他的方法:
1. image:在最早接触css相信大家还不知道iconfont等,都是用图标来实现的,使用很不方便,并且会增加请求数量(一个图标一个请求),不推荐
2. CSS sprites: 精灵图,即将多个图标放到一个图片上,用background-position来控制图片的位置来显示图标,缺点是不能缩放,并且添加图标麻烦
3. CSS icon:纯CSS写的icon,不是很好,不推荐。
4. SVG:比较流行的方法,矢量图,可以任意缩放添加样式,多个图标也可以放大一个svg文件中。
以上所述就是小编给大家介绍的《CSS中的字体图标》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 最新版字体图标元件库分享,一套绝佳的矢量字体图标元件库
- Swift iOS : 字体图标
- Swift iOS : 字体图标
- 在线使用iconfont字体图标
- Bootstrap 图标集 v1.2.0 发布 —— 喜提 CSS 图标字体!
- Bootstrap 图标集 v1.2.0 发布 —— 喜提 CSS 图标字体!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++数值算法(第二版)
William T.Vetterling、Brian P.Flannery、Saul A.Teukolsky / 胡健伟、赵志勇、薛运华 / 电子工业出版社 / 2005年01月 / 68.00
本书选材内容丰富,除了通常数值方法课程的内容外,还包含当代科学计算大量用到的专题,如求特殊函数值、随机数、排序、最优化、快速傅里叶变换、谱分析、小波变换、统计描述和数据建模、常微分方程和偏微分方程数值解、若干编码算法和任意精度的计算等。 本书科学性和实用性统一。每个专题中,不仅对每种算法给出了数学分析和比较,而且根据作者的经验对算法做出了评论和建议,并在此基础上给出了用C++语言编写的实用程......一起来看看 《C++数值算法(第二版)》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
RGB转16进制工具
RGB HEX 互转工具