zoukankan      html  css  js  c++  java
  • 字体图标的使用

    字体图标

    图片是有诸多优点的,但是缺点很明显,比如图片不但增加了总文件的大小,还增加了很多额外的"http请求",这都会大大降低网页的性能的。更重要的是图片不能很好的进行“缩放”,因为图片放大和缩小会失真。 我们后面会学习移动端响应式,很多情况下希望我们的图标是可以缩放的。此时,一个非常重要的技术出现了,额不是出现了,是以前就有,是被从新"宠幸"啦。。 这就是字体图标(iconfont).

    1. 字体图标优点

    可以做出跟图片一样可以做的事情,改变透明度、旋转度,等..
    但是本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果等等...
    本身体积更小,但携带的信息并没有削减。
    几乎支持所有的浏览器
    移动端设备必备良药...
    

    2. 字体图标使用流程

    总体来说,字体图标按照如下流程:

    2.1 设计字体图标

    假如图标是我们公司单独设计,那就需要第一步了,这个属于UI设计人员的工作, 他们在 illustrator 或 Sketch 这类矢量图形软件里创建 icon图标, 比如下图:

    之后保存为svg格式,然后给我们前端人员就好了。

    其实第一步,我们不需要关心,只需要给我们这些图标就可以了,如果图标是大众的,网上本来就有的,可以直接跳过第一步,进入第三步。

    2.2 上传生成字体包

    当UI设计人员给我们svg文件的时候,我们需要转换成我们页面能使用的字体文件, 而且需要生成的是兼容性的适合各个浏览器的。

    推荐网站: http://icomoon.io

    icomoon字库

    IcoMoon成立于2011年,推出的第一个自定义图标字体生成器,它允许用户选择他们所需要的图标,使它们成一字型。 内容种类繁多,非常全面,唯一的遗憾是国外服务器,打开网速较慢。

    推荐网站: http://www.iconfont.cn/

    阿里icon font字库

    http://www.iconfont.cn/

    这个是阿里妈妈M2UX的一个icon font字体图标字库,包含了淘宝图标库和阿里妈妈图标库。可以使用AI制作图标上传生成。 一个字,免费,免费!!

    fontello

    http://fontello.com/

    在线定制你自己的icon font字体图标字库,也可以直接从GitHub下载整个图标集,该项目也是开源的。

    Font-Awesome

    http://fortawesome.github.io/Font-Awesome/

    这是我最喜欢的字库之一了,更新比较快。目前已经有369个图标了。

    Glyphicon Halflings

    http://glyphicons.com/

    这个字体图标可以在Bootstrap下免费使用。自带了200多个图标。

    Icons8

    https://icons8.com/

    提供PNG免费下载,像素大能到500PX

    3. 下载兼容字体包

    刚才上传完毕, 网站会给我们把UI做的svg图片转换为我们的字体格式, 然后下载下来就好了

    当然,我们不需要自己专门的图标,是想网上找几个图标使用,以上2步可以直接省略了, 直接到刚才的网站上找喜欢的下载使用吧。

    最后一步,是最重要的一步了, 就是字体文件已经有了,我们需要引入到我们页面中。

    4. 字体引入到HTML(Unicode 引用)

    Unicode 是字体在网页端最原始的应用方式,特点是:

    兼容性最好,支持 IE6+,及所有现代浏览器。
    支持按字体的方式去动态调整图标大小,颜色等等。
    但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
    注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式

    Unicode 使用步骤如下:

    第一步:拷贝项目下面生成的 @font-face

        @font-face {
          font-family: 'iconfont';
          src: url('iconfont.eot');
          src: url('iconfont.eot?#iefix') format('embedded-opentype'),
              url('iconfont.woff2') format('woff2'),
              url('iconfont.woff') format('woff'),
              url('iconfont.ttf') format('truetype'),
              url('iconfont.svg#iconfont') format('svg');
        }
    

    第二步:定义使用 iconfont 的样式

        .iconfont {
          font-family: "iconfont" !important;
          font-size: 16px;
          font-style: normal;
          -webkit-font-smoothing: antialiased;
          -moz-osx-font-smoothing: grayscale;
        }
    

    第三步:挑选相应图标并获取字体编码,应用于页面

        <span class="iconfont">&#x33;</span>
    

    5. 字体引入到HTML(font-class 引用)

    font-classUnicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。

    Unicode 使用方式相比,具有如下特点:

    兼容性良好,支持 IE8+,及所有现代浏览器。
    相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
    因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
    不过因为本质上还是使用的字体,所以多色图标还是不支持的。

    使用步骤如下:

    第一步:引入项目下面生成的 fontclass 代码:

        <link rel="stylesheet" href="./iconfont.css">
    

    第二步:挑选相应图标并获取类名,应用于页面:

        <span class="iconfont icon-xxx"></span>
    

    6. 字体引入到HTML(Symbol 引用)

    这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:

    支持多色图标了,不再受单色限制。
    通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
    兼容性较差,支持 IE9+,及现代浏览器。
    浏览器渲染 SVG 的性能一般,还不如 png
    使用步骤如下:

    第一步:引入项目下面生成的 symbol 代码:

        <script src="./iconfont.js"></script>
    

    第二步:加入通用 CSS 代码(引入一次就行):

        <style>
        .icon {
           1em;
          height: 1em;
          vertical-align: -0.15em;
          fill: currentColor;
          overflow: hidden;
        }
        </style>
    

    第三步:挑选相应图标并获取类名,应用于页面:

        <svg class="icon" aria-hidden="true">
          <use xlink:href="#icon-xxx"></use>
        </svg>
    
  • 相关阅读:
    Spring Cloud Config微服务高可用配置中心配置
    SpringCloud系列教程带实操
    小白入门~ GitHub和Git超详细使用教程~~~
    (转)统一建模语言UML用法
    (转)理解Java对象的序列化和反序列化
    Intellij IDEA如何自动生成一个serialVersionUI
    枚举的特性梳理
    java实操题:一个数组有100个元素,每次移除该数组第7的整数倍元素......
    利用vertical-align属性实现分隔符
    css指示箭头两种实现方法
  • 原文地址:https://www.cnblogs.com/ifme/p/11796771.html
Copyright © 2011-2022 走看看