封装自己的web字体图标库

CSDN:jcLee95

邮箱 :291148484@163.com

本文地址:https://blog.csdn.net/qq_28550263/article/details/123492756

相关文章推荐

  • flutter中使用图标(含自定义图标图):https://blog.csdn.net/qq_28550263/article/details/123309530

目 录


1. 字体图标简介

  • 1.1 什么是字体图标
  • 1.2 字体图的特点

2. 绘制或下载矢量图标素材

  • 2.1 制合规的作svg图标

    • 2.1.1 使用 Adobe Illustrator 制作
    • 2.1.2 使用 Inkscape 制作
    • 2.1.3 使用 microsoft Visio 制作
  • 2.2 从互联网获取现成的svg矢量图片
    • 2.2.1 SvgIcons
    • 2.2.2 Ikonate
    • 2.2.3 Iconfont-阿里巴巴矢量图标库
    • 2.2.4 谷歌图标库

3. 生成字体文件

4. 图标字体文件的基本使用

5. 将字体图标文件封装成 Vue 组件


1. 字体图标简介

1.1 什么是字体图标

所谓字体图标指的是一种使用字体的编码规则来编码的图形,因此从本质上看其实与其叫做 字体图标还不如叫做 图标字体。图标字体是使用微小图形而不是字母形式的字体。与字符一样,每个图标可以使用 CSS 进行修改大小(font-size)、颜色(color)等等样式。

1.2 字体图的特点

特点 描述
灵活 Web 已针对显示文本进行了优化。轻松更改图标的颜色或应用其他 CSS 效果。Unicode 中有明确的图标和表情符号定义。字体一直是用来表示字母和图标的
可扩展 使用图标字体,更改图标的大小就像更改字体大小一样简单
矢量 字体图标与矢量和分辨率无关。它们在移动和桌面设备上的高和低 PPI 显示器上看起来都不错
迅速 通过将图标设置为字体,您可以使用一个 HTTP 请求加载它们
无障碍 如果操作正确,图标字体可以 100% 访问并与屏幕阅读器兼容
本地使用 通过在您的系统上安装定制的 TTF 字体,您可以在各种不同的设计和编辑应用程序中使用它们

2. 绘制或下载矢量图标素材

要制作自己的图标库那么先得有自己的素材。我们的原始素材是SVG格式的矢量图片,它是一种基于基于 XML、由World Wide Web Consortium(W3C)联盟进行开发的矢量图形格式,严格来说应该是一种开放标准的矢量图形语言。能够绘制 SVG 图片的软件有许多

2.1 制合规的作svg图标

2.1.1 使用 Adobe Illustrator 制作

这里介绍使用 Adobe Illustrator 软件来绘制图标矢量文件的流程。
安装打开Adobe Illustrator

依次点击 对象>轮廓化描边

2.1.2 使用 Inkscape 制作

2.1.2.1 安装软件

Inkscape是一款自由及开源的矢量图形编辑软件,其功能与Illustrator、Freehand、CorelDraw、Xara X等其他软件相似。与Adobe Illustrator不同的是,可以在Inkscape官网免费下载该软件:https://inkscape.org/

点击官网 DOWNLOAD 下的 Current Version

根据你的系统类型下载相应的版本即可。

2.1.2.2 绘制图形

安装完成后启动该软件,新建文件,使用左侧工具栏中的各种工具,绘制你的SVG矢量图形:

绘制后可以通过 编辑 > 设置为页面选取大小 调整为绘制区域的大小:

2.1.2.2 临摹轮廓

临摹轮廓是一个及其强大的功能,它能使得位图矢量化,如果不适用此功能,之后你的svg图标无法被转换成字体。这和上文中使用 点击Adobe Illustrator 中的 对象>轮廓化描边功能类似。更多关于该功能的介绍推荐阅读博文:inkscape:临摹位图轮廓:https://blog.csdn.net/ouening/article/details/90221773

完成后将其保存以待使用。

2.1.3 使用 microsoft Visio 制作

microsoft Visio 是一款强大的绘图工具,使用它绘制的平面图形多数是可以通过导出 SVG 格式,但是需要通过 Adobe Illustrator 或者 Inkscape轮廓化描边或者 临摹轮廓功能进行处理。

对于很多简单的线性图标,我会选择使用 Microstft Visio 先绘制出图标,在导出 SVG文件,接着交给 Inkscape调整为选取大小,最后 临摹轮廓 得到之后能正常生成字体的 SVG 矢量图。

2.2 从互联网获取现成的svg矢量图片

2.2.1 SvgIcons

SvgIcons 收录了大量免费图片,点击图标按钮即可弹出图标代码。其官网地址为: http://svgicons.sparkk.fr/。
进入其主页后点击左上角的"Icon Sets":

选择一个图标集:

进队对应的页面下载素材:

2.2.2 Ikonate

Ikonate 提供200多个完全可定制的矢量图标,其地址为:https://ikonate.com/。
进入页面后,可以直接点击Export all Icons导出所有图标:

也可以选择你心仪的图标后,再点击Export:

2.2.3 Iconfont-阿里巴巴矢量图标库

Iconfont-阿里巴巴矢量图标库的官方地址为:https://www.iconfont.cn/。在这个网站你可以直接使用关键字搜索到更多你喜欢的图标,打开网站后,其主页界面如下:

比如在搜索框中输入”购物车“回车提交后进入搜索结果页面:

鼠标移动至某个图标上点击“下载”打开下载子页面:

点击SVG下载即可下载图标。

2.2.4 谷歌图标库

其官方地址为:https://fonts.google.com/icons?selected=Material+Icons

你可以选择你需要的图标,点击它,在右侧点击下载SVG图标:

3. 生成字体文件


4. 图标字体文件的基本使用

你需要引用生成的CSS文件(style.css):

<link rel="stylesheet" href="https://i.icomoon.io/public/temp/2910d84d51/UntitledProject/style.css">

注意这个CSS样式文件和字体文件所在的目录关系,在该CSS文件中,导入了所使用的字体:

@font-face {font-family: 'jcicon';src:  url('fonts/jcicon.eot?1kky57');src:  url('fonts/jcicon.eot?1kky57#iefix') format('embedded-opentype'),url('fonts/jcicon.ttf?1kky57') format('truetype'),url('fonts/jcicon.woff?1kky57') format('woff'),url('fonts/jcicon.svg?1kky57#jcicon') format('svg');font-weight: normal;font-style: normal;font-display: block;
}

而我们的字体文件就在这个font目录下面:

5. 将字体图标文件封装成 Vue 组件

简单封装示例

定义图标组件

<template>
<span :class="[name,{iconstyle:true,}]" v-if="colorVal && sizeVal":style="{'color': colorVal}"
></span>
<span :class="[name,{iconstyle:true,}]" v-else-if="colorVal":style="{'color': colorVal}"
></span><span :class="[name,{iconstyle:true,}]" v-else-if="sizeVal":style="{'font-size': sizeVal}"
></span><span :class="[name,{iconstyle:true,}]" v-else
></span>
</template><script lang="ts">import { defineComponent, ref,
} from 'vue';export default defineComponent({name: 'my-icon',props:{name:{type:String,default:'icon-image'},size:String,color: String,},setup(props){let colorVal = undefined;if(props.size){colorVal = ref(props.color)}let sizeVal = undefined;if(props.size){sizeVal = ref(props.size.toString()+'px');}return {colorVal,sizeVal}}
});</script><style lang="scss" scoped>@import "./style.css";
.iconstyle{margin: 0;padding: 0;
}</style>

全局安装组件:

import IconVue from 'Icon.vue';      // 你组件文件的位置
import type { App, Component } from 'vue';const components: Component[] = [IconVue,// ...其它你想安装的组件
]export const MyComponents = {install:(app: App<Element>)=>{components.forEach(component =>{app.component((component as any).name, component)})}
}

在 main.ts中:

import { createApp } from 'vue'
import App from './App.vue'
import { MyComponents } from './components'; // 上面定 MyComponents 的 ts 文件地址const app = createApp(App);
app.use(MyComponents);
app.mount('#app');

使用举例:

<template><my-icon name="jcicon-toggle-left"></jc-icon>
</template>

【web组件库系列】封装自己的字体图标库相关推荐

  1. 使用多个icon 字体图标库样式冲突问题

    场景:项目中使用的UI样式库中包含一套icon 字体图标库,自定义一套字体图标库,在应用的时候,出现冲突,导致一方字体图标库无法显示或者显示不正常,原因:字体命名冲突,样式命名冲突,导致字体图标显示不 ...

  2. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

  3. web元件库/常用web组件/常用表单/导航栏/边框/图标/日期时间选择器/评分组件/穿梭框/输入框/步骤条/计数器/输入框/Axure原型/axure元件库/rp原型/交互控件/五星评分器/导航框架

    web元件库/axure元件库/常用web组件/常用表单/导航栏/边框/图标/日期时间选择器/评分组件/穿梭框/输入框/步骤条 /交互控件:单/多选框.输入框.计数器.选择器.级联选择.滑动开关.滑块 ...

  4. web元件库/axure元件库/常用web组件/常用表单/导航栏/边框/图标/日期时间选择器/评分组件/穿梭框/输入框/步骤条/

    web元件库/axure元件库/常用web组件/常用表单/导航栏/边框/图标/日期时间选择器/评分组件/穿梭框/输入框/步骤条/ Axure原型演示及下载地址请点击:https://www.pmdan ...

  5. 元件库导入_最新版字体图标元件库分享,一套绝佳的矢量字体图标元件库

    这次分享的FontAwesome v5字体图标元件库,是根据官方的最新版本v5.7.2整理完成的,包含了更全面的图标类型和丰富的图标数量,相信可以满足大多数同学在原型设计中的使用需求. FontAwe ...

  6. Android肝帝战纪之字体图标库(iconify)的简单使用

    字体图标库(iconify)的简单使用 本文介绍字体图标库简单的封装和使用(以集成Fontawesome为例): Iconify的GIithub链接 点此链接到Github 导入依赖 //在app级别 ...

  7. 字体图标库(Font Awesome)的使用--绝佳的图标字体库和CSS框架

    一.概述 web项目(前台/后台)开发中,很多地方需要使用图标样式(如:删除图标或短信图标,见下图),当然可以选择图片当背景或者用<img>标签,但是用图片的不灵活性也是显然易见的,如颜色 ...

  8. 在vue项目中使用第三方的字体图标库

    如何在vue项目中使用第三方的字体图标库 以在vue项目中导入阿里字体图标库为例 1.打开阿里字体图标库的官方网址 https://www.iconfont.cn/?spm=a313x.7781069 ...

  9. ant-design-vue 自定义图标,关联阿里巴巴字体图标库,项目已有图标,新下载的图标要重命名重新保存

    前一段时间在项目中引入阿里巴巴字体图标库的图标,按步骤走了一遍,但是一直不成功. 刚好需求改了,不需要用图标,就暂时搁浅没在管这个. 今天又有新的需求要用到字体图标,在ant-design-vue官方 ...

最新文章

  1. Linux中的粘滞位
  2. 十大流行AI框架和库的优缺点对比
  3. Java调用python脚本
  4. 作者:陈纯(1955-),男,博士,浙江大学计算机科学与技术学院教授,中国工程院院士。...
  5. Linux mv命令:移动文件或改名
  6. CSS Word的文档结构视图设计
  7. osm数据下载 python_用Python解锁处理OSM数据的全部姿势
  8. java计算日期之间的天数_使用Java计算两个日期之间的天数
  9. UDS诊断入门学习资料
  10. 离散数学及其应用 算法
  11. m126a linux驱动下载,hpm126a驱动下载
  12. 关系代数表达式的优化
  13. python文本处理
  14. 1、马克思主义哲学是科学的世界观和方法论
  15. 你离运营只差一个打卡签到功能 早晚安打卡 小来早晚安打卡 功能一样 是一个唯一用户主动去分享的功能
  16. html图片靠右浮动 文字左侧环绕,CSS实现模拟float: center文字左右环绕图片的效果...
  17. 画外因 | 笛卡尔与瑞典女王在 “数学课”上谈人生
  18. Mac相机不可用怎么办?教你恢复相机连接的方法
  19. 湿空气性质计算,随笔与学习记录(1.饱和水蒸气压力计算)
  20. 【云扩RPA】sliceBigFiles

热门文章

  1. Leetcode 34.排序数组中的第一个元素和最后一个元素
  2. pytorch.tensor格式图像的resize操作
  3. [转]『TensorFlow』读书笔记_TFRecord学习
  4. 如何在乌版图系统添加拼音输入法!
  5. H5 可堆叠的圆环进度条,支持任意数量子进度条
  6. 有关排序的贪心策略的一种证明思想
  7. 弹窗样式 idialog,purebox,artdialog4.1.2,jquery.alert.v1.2
  8. Vc6.0打开该文件坠毁
  9. UIView局部点击(转)
  10. Android中常见布局