字体图标的原理

字体图标是一种将图标作为字体来使用的技术,允许动态改变图标大小、颜色等属性,且不会因缩放导致图像模糊。它们通过Unicode编码在自定义字体文件中定义图标形状。在HTML中,只需指定Unicode码和自定义字体,就能显示图标。字体图标带来开发效率提升和项目可维护性的改善,但也存在图标库过大可能导致冲突的问题。解决办法包括避免引用多个项目和修改冲突图标的Unicode编码。
摘要由CSDN通过智能技术生成

82a6676781e55130d52e8117abfe655d.png

什么是字体图标

对于前端的小伙伴来说,字体应该是再熟悉不过的东西了,对于文字我们可以通过 css 指定文字对应的字体,字号大小,颜色。得益于 css3,我们还可以在 css 中引入服务端字体来实现自定义字体。

而字体图标,顾名思义则是把图标当做字体来使用,通过使用字体图标,我们可以动态改变图标的大小、颜色等一系列字体属性。而且相对于一般的图片,字体图标的大小改变并不会使图像变的模糊。

接触过 bootstrap 的同学应该了解过,bootstrap 里面就预设了很多自定义图标,我们只要在元素上指定对应的 class,就可以显示出图标,接下来,我们就来一步步了解这些操作是怎么实现的。

字体图标和字体的关系

事实上,字体图标其实就是自定义字体,在计算机系统中每个字符都有一个对应的 Unicode 编码,而每一个字符在操作系统中就是一个矢量图形,例如“敏”这个字,对应的 Unicode 编码就是 \u654f,而字体文件的作用,就是用来规定这些编码对应什么样的图形。Unicode 字符集里面,E000 至 F8FF 属于用户自定义区域。用户可以在字体文件里面定义这些字符的对应的形状,通过项目引入加载去找到自定义字符。而字体图标的实现原理就是在这个自定义区域中添加一系列的图标,我们通过指定对应的 Unicode 编码来显示图片。

先做个总结:使用浏览器打开页面时,浏览器会读取 HTML 文件进行解析渲染。当读到「敏」字时会转换成对应的 Unicode 码(可以认为是世界上任意一种文字的特定编号)。再根据 HTML 里设置的 font-family (如果没设置则使用浏览器默认设置)去查找电脑里(如果有自定义字体 @font-face ,则加载对应字体文件)对应字体的字体文件。找到文件后根据 Unicode 码去查找绘制外形,找到后绘制到页面上。

那如何让页面展示一个图标呢?我们可以把图标当成文字来操作,步骤如下:

1.在页面上放入该图标的 Unicode 码 (可以自己创建一个)2.让该元素使用我们自定义的字体3.字体对应着我们自己创建的字体库文件4.字体库文件里有关于该 Unicode 码的外形描述

<span class="icon-qq"></span>
<style>
@font-face {
  font-family: "hello";
  src: url('//at.alicdn.com/t/font_1475388520_7015634.ttf') format('truetype')
}
.icon-qq:before { font-family:"hello";content: "\e600"; } 
</style>

引入字体图标iconfont可以提高开发效率和项目的可维护性。

优点

设计不用再切图了,更不需要针对不同场景切出大小、颜色、格式等不同的图片,只需维护一个图标项目库即可。

开发者也不用引用大量图片,也不需要在js中根据不同场景切换不同图片,仅class名就可搞定,修改灵活。尤其在node开发中,节省大量代码,提高可维护性。

字体图标缩放不失真,不会变模糊。

减少网络请求次数,一个 css 文件可包含所有图标。

节约流量,图标是图片格式,每个几K到几十K,而 css 文件一般一共只有几K。

缺点

图标库包含了所有图标,所以维护时如果不慎修改了老的图标,下次开发时更新图标文件就会把潜在影响带进去。所以对以往使用过的老图标的修改删除要谨慎。

如果同时引用多个项目,可能造成个别图标的冲突。解决方案:

1.避免引用多个项目2.在图标库中修改冲突图标的Unicode(16进制)值。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值