Iconfont使用的三种方式

本文详细介绍了阿里矢量图标库Iconfont的三种使用方式:Unicode引用、font-class引用和Symbol引用,每种方式的特点、兼容性和使用场景,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Iconfont使用的三种方式

​ 作为一个前端开发,项目中用矢量图标是家常便饭,最近笔者项目中正好有使用,所以就抽空总结了一下阿里图标库的三种使用方法(笔者项目中用到的是Symbol 引用方式)

矢量图标库使用步骤如下:
  1. 首先需要登录阿里矢量图标库

​ 阿里矢量图标库:https://www.iconfont.cn/

  1. 挑选你需要的矢量图标并加入购物车

    • 点击步骤1把心仪的图标加入购物车
    • 加入完毕后,点击步骤2
      在这里插入图片描述
  2. 准备下载你选好的图标代码

    • 点击步骤3所示的下载代码按钮,把你选好的图标的实现代码下载到项目本地
      在这里插入图片描述
  3. 在自己的项目中引入第三步下载好的图标代码文件(iconfont文件),然后创建一个htmlcss文件
    在这里插入图片描述

具体三种使用方式如下:
  1. Unicode引用方式(主要依赖下载下来的iconfont文件里面的iconfont.css文件)
  • 兼容性最好,支持 IE6+,及所有现代浏览器。
  • 支持按字体的方式去动态调整图标大小,颜色等等。
  • 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
// html.index
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Iconfont</title>
    <link rel="stylesheet" type="text/css" href="./iconfont/iconfont.css">
    <style>
        .self-style {
            color: aquamarine;
        }
    </style>
</head>
<body>
    <div>Iconfont</div>
    <i class="iconfont self-style">&#xe623;</i>
</body>
</html>

// index.css
//项目下面生成
@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 {
    font-family: "iconfont" !important;
    font-size: 16px;
    font-style: normal;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

效果图如下:
在这里插入图片描述

  1. font-class引用(主要依赖下载下来的iconfont文件里面的iconfont.css文件)
  • 兼容性良好,支持 IE8+,及所有现代浏览器。
  • 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
  • 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
  • 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Iconfont</title>
    <link rel="stylesheet" href="./iconfont/iconfont.css">
    <style>
        .self-style2 {
          	// 可以设置颜色
            color: pink;
          	// 可以设置大小
          	font-size: 40px;
        }
    </style>
</head>
<body>
    <div>Iconfont</div>
    <span class="iconfont self-style2 icon-lvzhi1"></span>
</body>
</html>

效果图如下:
在这里插入图片描述

  1. Symbol 引用(主要依赖下载下来的iconfont文件里面的iconfont.js文件)

    symbol是一种全新的使用方式,是未来的主流,推荐使用

  • 支持多色图标了,不再受单色限制。
  • 通过一些技巧,支持像字体那样,通过 font-size, color 来调整样式。
  • 兼容性较差,支持 IE9+,及现代浏览器。
  • 浏览器渲染 SVG 的性能一般,还不如 png。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Iconfont</title>
    <style>
        .icon-style {
            width: 1em;
            height: 1em;
            vertical-align: -0.15em;
            fill: currentColor;
            overflow: hidden;
        }
    </style>
    <script src="./iconfont/iconfont.js"></script>
</head>
<body>
    <div>Iconfont</div>
		// 其中aria-hidden="true"这个属性由语义理解是影藏,所以个人理解是,当只有一个图标而没有其他额外说明的时候,自动忽略这个Icon,避免由图标引起的不必要的误导
    <svg class="icon-style" aria-hidden="true">
        <use xlink:href="#icon-lvzhi3"></use>
    </svg>
</body>
</html>

效果图如下:
在这里插入图片描述
4.结合reactantdIcon,自定义组件用symbol的方式使用iconfont

antd的自定义icon,版本3.xx的用法如下图(4.xx版本自行查阅官网,用法大同小异):
在这里插入图片描述
项目中代码如下:

  • 首先自定义一个SelfIcon组件
// 定义组件SelfIcon
import { Icon } from 'antd';

const SelfIcon = Icon.createFromIconfontCN({
 		// 特别要注意的是这个scriptUrl是项目在线生成的js地址,是build文件里面的iconfont路径
    scriptUrl: './iconfont.js',
    extraCommonProps: {
        // 这里可以去定义这个icon的大小等样式
        style: {
            fontSize: '2em',
        },
    },
});

export default SelfIcon;
  • 在页面中使用定义好的自定义SelfIcon组件
// 使用
import SelfIcon from '@/components/SelfIcon';
import React, { Component } from 'react';
class Index extends Component {
    render() {
        return (
          	// 注意与传统的symbol不同的是,拷贝的时候不要加上最前面的#号
          	// 比如这个icon图标symbol的表示代码是:#icon-lvzhi3
          	// 使用的时候type=“icon-lvzhi3”即可
            <SelfIcon type="icon-lvzhi3" />
        );
    }
}

export default Index;

效果图如下:
在这里插入图片描述

😊看完这篇文章Iconfont的正确使用姿势你们学会了吗?😬

### 如何在 Vue 项目中使用 Iconfont #### 方法一:通过类名的方式引入 Iconfont 可以通过 `<span>` 或者 `<i>` 标签来加载图标,这种方式简单易用。例如: ```html <span class="iconfont icon-user"></span> <i class="iconfont icon-fangdajing"></i> <!-- 参考自 [^4] --> ``` 上述代码展示了两种标签形式的实现方式,其中 `class` 属性中的值来源于 Iconfont 官网提供的字体名称。 --- #### 方法二:全局引入 Iconfont 字体文件 为了使整个项目都能访问到这些图标,可以在项目的入口文件或者公共样式文件中引入 Iconfont 提供的 CSS 文件链接或 JS 脚本。以下是具体的实现步骤: 1. **获取远程脚本路径** 登录 Iconfont 并创建自己的图标的在线存储库后,可以找到对应的 URL 地址。将其嵌入 HTML 中: ```html <script src="http://at.alicdn.com/t/c/font_4201929_le51yk6y1o.js"></script> <!-- 来源 [^5] --> ``` 2. **确保样式生效** 如果采用的是本地开发环境(如 Vite 或 Webpack),则需确认网络请求能够正常解析该资源。 --- #### 方法三:按需加载单个图标 对于性能敏感的应用场景来说,推荐仅导入实际需要用到的部分而不是全部内容。这通常涉及以下几个方面的工作流程: - 创建单独的 Symbol Sprite 图片集合; - 利用 JavaScript 动态渲染所需节点; 示例代码如下所示: ```javascript import { createApp } from 'vue'; const app = createApp({}); // 假设已定义好对应关系表 function loadSvgIcon(name, callback) { const xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { document.body.insertAdjacentHTML('beforeend', xhr.responseText); typeof callback === 'function' && callback(); } }; xhr.open('GET', `/path/to/${name}.svg`, true); // 替换为真实服务器地址 xhr.send(null); } loadSvgIcon('user'); // 加载名为 user 的 svg 文件 ``` 此片段说明了如何利用 AJAX 技术异步抓取指定图形并注入 DOM 结构之中[^2]。 --- #### 特殊情况处理——与 Ant Design Vue 集成 当框架升级至较新版本时,可能会遇到兼容性问题。比如 Ant Design Vue 自 v1.2.0 开始改用了 SVG 方案替代原有的 Font 类型,则需要调整原有逻辑以适配最新 API 设计模式。 一种可行的办法是借助第三方插件完成转换过程,从而继续沿用熟悉的语法风格而无需大幅修改现有业务代码结构。 --- ### 总结 综上所述,在 Vue 工程里集成 Iconfont 主要有三种途径可供选择:一是直接运用预置好的 Class 名字调用相应图案;二是统一添加外部依赖包使得全站共享同一套素材集;三是针对特定场合采取精细化管理策略减少冗余开销提升效率。开发者应根据实际情况灵活选用最合适的方案满足各自的需求特点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值