uni-app 图标库整合最佳实践:使用 iconfont 构建属于自己的图标库

一. 前言

在前端开发中,图标已经成为页面设计中不可或缺的一部分。图标可以使界面更加美观、清晰,并且能够提升用户体验。而使用图标库来管理和引用图标资源,可以带来更多的便利和效率。

而在众多的图标库中,iconfont 独树一帜。iconfont 是一种基于字体的图标库,它将图标转换为字体的形式,并通过 unicode 编码引用。这种方式不仅可以减少图标资源的大小,提升页面加载速度,而且可以通过 CSS 进行灵活的样式控制,让图标的应用更加方便和可定制。

假设在一个项目中,需要扩展多个图标,所以我们应该把各个图标收集进一个阿里图标库的项目中,即使后面不断的扩展图标,也能让它们在同一个库中,方便项目所有图标的整合与应用。

在本篇文章中,我将为大家介绍在 uni-app 中使用 iconfont 自定义图标库的方法和步骤,如何更方便更简捷的使用自定义图标。

二. 阿里巴巴矢量图标库

1. 简介

阿里巴巴矢量图标库是一种图标字体库,它将图标转换为字体的形式,并通过 unicode 编码进行引用。通过使用 iconfont,开发者可以使用字体图标代替传统的图片图标,以提高网页加载速度和图标的灵活性。iconfont 中的图标可以使用 CSS 进行样式控制,并且可以根据需要进行缩放、颜色调整等操作,非常方便。

官方链接:iconfont - 阿里巴巴矢量图标库icon-default.png?t=O83Ahttps://www.iconfont.cn/

2. 创建项目

登录阿里巴巴矢量图标库系统后,可以选择创建项目或者管理自己所参与的项目。

点击“资源管理” -> “我的项目” 即可以进行查看自己所属项目范围,可以进行编辑项目,挑选图标库中的图标引入自己项目中。

三. 管理图标库

一般情况下,我建议在收藏的项目中,使用 “下载至本地" 的功能,而后解压,复制文件夹中的 “iconfont.css” 到 uni-app 项目中(其余的文件可忽略),具体的操作我们接下来一步一步进行演示一下。

下面的操作默认已经进入阿里图标库的“图标管理”栏目中。

1. 修改图标前缀

我建议应该修改这个图标的前缀,这样以后有新图标加入的时候,不用每次频繁修改前缀,点击右上角的 “项目设置“ ,进行修改项目信息,这里主要修改的是图标前缀信息,如下图所示:

 

修改 “FontClass/Symbol 前缀” 项为“custom-icon-

修改 “Font Family” 为 “custom-icon

如下图所示:

 

完成这一步,我们就可以在 iconfont 的海量图标库中选用适合自己的图标了,可以将适合自己项目的图标添加到自己的项目中。

说明:

FontClass/Symbol 前缀 的主要作用是:会在自己添加的图标 css 名称前添加统一的字符串,例如:home 图标,那么生成的 css 样式名称则为:custom-icon-setting

Font Family 的主要作用是:所用的图标具备的相同特性,定义字体的公共信息,使用的 font-family 等

2. 下载项目至本地

添加所需要的图标至项目完成后,我们就可以下载图标的 css 文件了。在项目的图标页面,点击右上角的 “下载至本地”,就可以将 iconfont 相关项目文件夹下载下来了,如下图所示:

 

下载完成,将文件夹解压后大概有下面几项文件,但是我们只需要一个文件即可:iconfont.css,如下图所示:

 

完成以上的几个步骤,我们大致就完成了在 iconfont 网站上对图标的操作了,接下来需要我们做的就是将这个图标库如何引入到 uni-app 项目中并进行使用。

3. 添加图标库到项目

复制上述的 “iconfont.css”文件到uni-app根目录的static目录后(也可以为其他目录,例如:assets等),打开“iconfont.css”,内部 css 代码如下:

 

删掉上图中圈出的部分,

注意:

切记把src: url('data:application/x-font-woff2......,' 最后的逗号,改成分号;

删除掉 css 中无用的部分,最终如下图所示:

 

通过以上的操作步骤,我们最终得到了项目图标库生成的 css 样式,这样以后有新图标加入的时候,不用每次频繁修改项目设置中的图标前缀,只需要进行添加图标至项目后,下载文件到本地,替换现有的 css 文件即可。

接下来我们开始讲最重要的部分,如何使用这些图标

四. 组件化开发

1. 原始引用

按照以前的前端项目开发,我们一般会直接引入 iconfont 文件,然后在前端中这样使用

<spanclass="iconfont iconfont-setting"style="font-size: 20px;color: #fff;"
></span>

如上述代码所示,使用了 setting 图标,设置了图标大小以及图标颜色。虽说这样使用没有什么问题,但是每次都这样使用的话没办法进行统一管理,也多少有点繁琐了。

而且现在前端开发基本上都是组件化开发的理念,为了方便统一进行管理,去除繁琐,我们最终要开发一个 Icon 的组件进行使用。

2. 图标组件

首先我们分析一下这个图标组件所需要承载的最简单的功能,那就展示图标,因此这个组件简要的功能主要包含:

  • 通过图标名称直接引用图标

  • 支持修改图标样式

  • 支持修改图标前缀,便于添加其他不同的 iconfont

<template><text:class="[ prefix, `${prefix}-${name}` ]":style="{ 'font-size': size, color: color }"></text>
</template><script>export default {name: "custom-icon",props: {// 图标类名name: {type: String,default: "",},// 图标颜色color: {type: String,default: "#333",},// 字体大小,单位rpx或pxsize: {type: String,default: "16px",},// 图标前缀prefix: {type: String,default: "custom-icon",},},};
</script>

通过上述的代码,我们简单的实现了一个图标组件,主要提供了 4 个 props

  • name:图标类名,例如:setting、home、user

  • color:图标颜色,例如:#333、red、blue

  • size:字体大小,例如:16px、40rpx

  • prefix:图标前缀,例如:custom-icon、other-icon

当然,这个组件封装其实特别简单,在实际的项目开发中,我们可以根据项目的业务场景,将所需图标样式的复杂度进行一步步改造和优化,打造一款适合自己项目的图标库组件。

3. 如何使用

在项目中可以进行这样使用:

<custom-icon name="setting" size="40rpx" color="#333333"></custom-icon>

加载后的图标如下图所示:

 

4. 优缺点分析

对比直接使用 iconfont 样式的方式使用图标,使用组件化图标有以下几个优缺点:

优点

  • 使用简单快捷

  • 便于统一管理和维护

  • 便于多方协作

  • 便于拓展功能

缺点

一个最大的缺点就是需要额外开发一个组件进行使用,这个缺点可以忽略不计。

说明:图标前缀默认使用的我自己项目中的 custom-icon,组件中也提供了一个 prefix 的 props,如果我们项目中需要引入多个不同的图标前缀的 iconfont 库,那么这个 props 就发挥自己的作用了,只需要修改这个图标的前缀即可

五. 总结

通过本篇文章,我们了解了在前端项目中使用 iconfont 自定义图标库的方法和步骤。使用自定义图标库不仅能够提升页面的美观,还能减少图标资源的大小,提升页面加载速度。对于前端开发者来说,iconfont 是一个强大而便捷的工具。

在使用 iconfont 进行图标库的创建和管理时,我们需要注意以下几个注意事项:

  • 维护好自己的图标资源,以免出现图标名称混淆或冲突的情况,导致引用图标不明确。

  • 修改 “iconfont.css” 时,注意修改最后的 ,;,避免导致引入样式文件出错,图标不展示等问题。

资源链接

iconfont - 阿里巴巴矢量图标库icon-default.png?t=O83Ahttps://www.iconfont.cn/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/5875.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

刷题强训 (day1) -- 数字统计

1、数字统计 1.1题目 1.2 思路 根据题目得知我们要统计2出现的次数&#xff0c;那么这就是一个枚举 数字拆分的过程&#xff0c;先设一个变量count统计2出现的次数&#xff0c;那么count怎么变化呢&#xff1f; 当然了出现一个2&#xff0c;count就1&#xff0c;重点在于如何…

AI-基本概念-向量、矩阵、张量

1 需求 需求&#xff1a;Tensor、NumPy 区别 需求&#xff1a;向量、矩阵、张量 区别 2 接口 3 示例 4 参考资料 【PyTorch】PyTorch基础知识——张量_pytorch张量-CSDN博客

Halcon区域分割之分水岭分割法

现实中我们见到过有山有湖的景象&#xff0c;那么一定是水绕山、山围水的情形。当然可在需要的时候人工构筑分水岭&#xff0c;以防集水盆之间的互相穿透。而区分高山与水的界线以及湖与湖之间的间隔&#xff0c;就是分水岭。 分水岭分割法是一种基于拓扑理论的数学形态…

数据结构与算法——图

图 1.图的定义和表示 图的定义 图G由集合V和集合E组成&#xff0c;记作G(V,E),其中&#xff1a; 1、V是顶点元素的有限集合&#xff1b; 2、E是顶点间关系——边的有限集合。 3、边是顶点的无序对或有序对。 无向图和有向图&#xff1a; 无向图 由没有方向的边构成的图…

FebHost:法国.FR域名的市场前景和挑战

.FR域名的未来前景如何&#xff1f; .fr域名在2023年经历了显著增长&#xff0c;新注册量大幅增加。这一积极趋势凸显了法国 VSE&#xff08;极小型企业&#xff09;和 SME&#xff08;中小型企业&#xff09;数字化转型的持久影响&#xff0c;这一转变早在 2022 年就已开始。…

SQL进阶技巧:如何计算复合增长率?

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 复合增长率是第N期的数据除以第一期的基准数据&#xff0c;然后开N-1次方再减去1得到的结果。假如2018年的产品销售额为10000&#xff0c;2019年的产品销售额为12500&#xff0c;2020年的产品销售额为15000&…

开源的 API 学习平台「GitHub 热点速览」

前有 5 万颗星标的开源项目 HTTPie 因误操作导致 Star 清零&#xff08;2022 年&#xff09;&#xff0c;上周知名开源项目 Elasticsearch 也经历了 Star 一夜清零的事件。这些事故的原因均是管理员误将开源项目从公开状态转为私有状态所导致。为避免类似事件再次发生&#xff…

华为HD集群重启NAMENODE实例操作步骤

华为HD集群重启NAMENODE实例操作步骤 管理员账号进入FI——服务——HDFS&#xff0c;选择角色&#xff1a;namenode重启namenode&#xff08;备&#xff09; 如下图&#xff1a;点击【实例】–角色选择【Namenode】–选择备节点&#xff08;自己记录一下当前备节点的IP&…

LoRA:大型语言模型(LLMs)的低秩适应;低秩调整、矩阵的低秩与高秩

目录 LoRA:大型语言模型(LLMs)的低秩适应 一、LoRA的基本原理 二、LoRA的举例说明 三、LoRA的优势 低秩调整、矩阵的低秩与高秩 一、低秩调整(LoRA) 二、矩阵的低秩 三、矩阵的高秩 LoRA:大型语言模型(LLMs)的低秩适应 LoRA(Low-Rank Adaptation of LLMs),…

CST参数扫描设置细节

cst参数扫描的细节 点开参数扫描对话框&#xff0c;新建扫描参数&#xff0c; 例如参数a进行扫描1-2&#xff0c;0.5的步长&#xff0c;这样最后会出现3个参数的仿真结果。 这时如果增加参数b的扫描&#xff0c;在同一sequence下&#xff0c;同样1-2&#xff0c;0.5的步长&…

最高降本90%!它究竟是如何实现的?

第一、云在未来“优先”&#xff0c;病毒攻击和人为错误将成主要威胁 根据Gartner预测&#xff0c;到2025年&#xff0c;超过95%的新数字工作负载将被部署在云原生平台上&#xff0c;超过85%的企业机构将接受云优先原则。 在这一背景下&#xff0c;勒索病毒攻击和人为错误成为…

OpenCV—calcHist()函数

void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,SparseMat& hist, int dims,const int* histSize, const float** ranges,bool uniform true, bool accumulate false ); images 输入的数据指针&#xff0c;要具备相同的尺寸和数…

用例怎么链接到其他地方的序列图

龙勤思(2018年1月22日)&#xff1a; 潘老师&#xff0c;你在PPT里说分析序列图的位置在用例下面。但是你上课时给的EA模板里需求和分析是分成两个包的&#xff0c;所以分析序列图没办法直接加为系统用例的下级元素 潘加宇: 这页幻灯片有点老了&#xff0c;回头我更新。严格来…

Java | Leetcode Java题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; class Solution {public int singleNonDuplicate(int[] nums) {int low 0, high nums.length - 1;while (low < high) {int mid (high - low) / 2 low;mid - mid & 1;if (nums[mid] nums[mid 1]) {low mid 2;} else {high …

利用游戏引擎的优势

大家好&#xff0c;我是小蜗牛。 在当今快速发展的游戏产业中&#xff0c;选择合适的游戏引擎对开发者来说至关重要。Cocos Creator作为一款功能强大且灵活的游戏引擎&#xff0c;为开发者提供了丰富的工具和资源&#xff0c;使他们能够高效地开发出优秀的游戏。本文将探讨如何…

python怎样嵌入c

用c语言编写一个动态库&#xff0c;提供两个函数&#xff0c;两个数的整形求和&#xff0c;两个浮点数的求和。取名为mylib.c。 将c函数文件编译成so动态库。运行gcc mylib.c -fPIC -shared -o libtest.so命令&#xff0c;在目录下可以看到生成的库文件libtest.so。 Python调用…

ML 系列:机器学习和深度学习的深层次总结( 19)— PMF、PDF、平均值、方差、标准差

一、说明 在概率和统计学中&#xff0c;了解结果是如何量化的至关重要。概率质量函数 &#xff08;PMF&#xff09; 和概率密度函数 &#xff08;PDF&#xff09; 是实现此目的的基本工具&#xff0c;每个函数都提供不同类型的数据&#xff1a;离散和连续数据。 二、PMF 的定义…

一键AI换衣-可图AI试衣

我们的真的实现了穿衣自由了吗&#xff1f;上传一张人物图片和衣服的图片&#xff0c;就能实现一键换衣。 这就是可图AI试衣项目 魔塔地址&#xff1a;https://www.modelscope.cn/studio ... lors-Virtual-Try-On 参考&#xff1a; 一键AI换衣-可图AI试衣 https://www.jinsh…

Unity数据持久化 之 Xml入门精要 (从语法入门到序列与反序列化)

该教程资源来源于唐老狮&#xff0c;仅作学习分享交流 学习xml是因为看到了uitookit里出现了uxml 所以来学习一下 1.xml结构 2.基础语法 注释与开头固定写法 <!--第1行 注释格式 第2行代表版本和编码格式&#xff0c;是固定写法--> <?xml version"1.0" …

在 Bash 中获取 Python 模块变量列

在 Bash 中获取 Python 模块的变量列表可以通过使用 python -c 来运行 Python 代码并输出变量名列表。 1、问题背景 在编写 Bash 补全脚本时&#xff0c;需要获取已安装 Python 模块中与模式匹配的所有变量。为了避免解析注释等内容&#xff0c;希望仅使用 Python 相关功能。 …