位置: IT常识 - 正文

Vue3 项目引入阿里 iconfont 图标和字体(vue项目引入ts)

编辑:rootadmin
Vue3 项目引入阿里 iconfont 图标和字体

推荐整理分享Vue3 项目引入阿里 iconfont 图标和字体(vue项目引入ts),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue引入amap,vue项目引入elementui,vue怎么引入,vue项目引入axios,vue3引入element,vue3.0引入axios,vue项目引入ts,vue项目引入axios,内容如对您有帮助,希望把文章链接给更多的朋友!

需求:

将 iconfont 阿里图标库的图标与字体引入到我们的 Vue3 + vite + TS 项目中来!

目录1.常用图标格式简介1.1 unicode 格式1.2 font-class 方式1.3 symbol 方式2.项目引入 iconfont2.1 封装 svg-icon 组件2.2 引入 iconfont3.项目中具体使用 iconfont4.项目中使用 阿里字体1.常用图标格式简介

我们使用图标的方式有很多种,比如说直接使用 png、jpg 等图片格式,这是最原始的方式,所以我们这里不过多阐述,它们的优缺点相信大家也知道。

这里我们主要对比阿里图标库提供 3 种图标引用方式:unicode、font-class、symbol。

1.1 unicode 格式

这种方式比较原始,主要是将图标以字体的形式渲染到网页上,既然是以字体的格式,那么它的优缺点也是显而易见的。

特点:

兼容性最好,支持 ie6+,及所有现代浏览器。支持按字体的方式去动态调整图标大小,颜色等等。但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。

所以目前来说,我们并不建议以 Unicode 的方式引入 iconfont 图标。

使用方式示例代码:

<i class="iconfont">&#x33;</i>1.2 font-class 方式

font-class 方式本质上还是使用的字体的形式,所以它的优缺点其实和 unicode 方式差不多,但是却运用很广泛,我们可以来看看它的特点,就知道为什么了。

特点:

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

使用方式示例代码:

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

可以看到它最大的特点就是语义明确,所以这是它很流行的重要原因之一。

1.3 symbol 方式

这种方式相较于而言比较新,它主要利用了 svg 这种格式,在以前,由于它的浏览器兼容性不太好,所以没有大规模的流行。不过就目前来看,兼容性基本上不是问题了,毕竟 IE 都淘汰了。所以它是目前比较推崇的图标引用格式,至于为什么,我们一起来看看它的特点。

特点:

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

使用示例代码:

<svg class="icon" aria-hidden="true"> <use xlink:href="#icon-xxx"></use></svg>

可以看到它的最大特点就是支持多色图标了,而且还支持向字体那样调整样式了,虽然它的渲染性能不及 png,但是它的其它好处可比 png 多多了,所以我们通常建议项目中使用 symbol 的方式引入图标库。

这也是本篇文章将要讲解的方式。

2.项目引入 iconfont2.1 封装 svg-icon 组件

我们在 iconfont 官网上可以看到给出了 symbol 引用示例,代码如下:

<svg class="icon" aria-hidden="true"> <use xlink:href="#icon-xxx"></use></svg>

上段代码就是图标的具体使用方式,如果我们每次都按照上面的方式使用,那么无疑是很麻烦的,我们不妨将上面的代码封装为一个组件。在需要用到图标的地方直接引入我们的组件即可了。

第一步:在 components 目录下新建 SvgIcon.vue 文件。

代码如下:

// src/components/SvgIcon.vue<template> <svg :class="svgClass" aria-hidden="true"> <use :xlink:href="iconClassName" :fill="color" /> </svg></template><script setup lang="ts">import { computed } from 'vue';const props = defineProps({ iconName: { type: String, required: true }, className: { type: String, default: '' }, color: { type: String, default: '#409eff' }});// 图标在 iconfont 中的名字const iconClassName = computed(()=>{ return `#${props.iconName}`;})// 给图标添加上类名const svgClass = computed(() => { if (props.className) { return `svg-icon ${props.className}`; } return 'svg-icon';});</script><style scoped>.svg-icon { width: 1em; height: 1em; position: relative; fill: currentColor; vertical-align: -2px;}</style>Vue3 项目引入阿里 iconfont 图标和字体(vue项目引入ts)

第二步:在 main.ts 中全局注册

组件封装好后我们还需要全局注册一下,不然每次引用图标的时候还得单独引入一次该组件。所以我们就在 main.ts 里面全局注册一下。

代码如下:

// main.tsimport { createApp } from 'vue'import App from './App.vue'import SvgIcon from './components/SvgIcon/SvgIcon.vue'const app = createApp(App)app.component('SvgIcon', SvgIcon);app.mount('#app')2.2 引入 iconfont

接下来我们就需要去 iconfont 官网了,新建一个 iconfont 资源库,存放自己的 iconfont。如下图所示:

我们选中 symbol 模式,这里我介绍三种引入方式:

第一种:

直接在线引入官网提供的在线 js 地址,我们直接以 script 标签的形式引入即可。这种方式最为简单,但是也有不好的一点,需要用户有网络环境,而且得保证 iconfont 网站没有崩掉。

第二种:

直接下载至本地,我们从官网直接将代码下载下来,然后放到我们项目中引用,也是可以的。不过这种方式稍显麻烦,每次更新图标库之后都得重新下载一遍。

第三种:

这也是我比较喜欢的方式,也就是将在线地址中的代码直接复制粘贴到我们项目中来,这种方式最为简单,每次更新图标库之后只需要重新复制一下代码即可。这里我们也将采用这种方式。

具体使用:

第一步:在项目 assets 目录下新建 iconfont 目录,在该目录下新建 iconfont.js 文件,然后将 iconfont 在线地址中提供的代码全部复制过来。如下图:

第二步:然后在 main.ts 中引入 iconfont.js。

代码如下:

import { createApp } from 'vue'import App from './App.vue'import SvgIcon from './components/SvgIcon.vue'import './assets/iconfont/iconfont.js';const app = createApp(App)app.component('SvgIcon', SvgIcon);app.mount('#app')3.项目中具体使用 iconfont

引入 iconfont 得过程非常简单,主要分为了以下两步:

封装 svg-icon 组件引入 iconfont 生成的 js 代码

接下来我们就实际使用试试,我们就直接在 App.vue 中引入几个图标试试。

代码如下:

<template> <img alt="Vue logo" src="./assets/logo.png" /> <svg-icon iconName="icon-gongzuoleixing"></svg-icon> <svg-icon iconName="icon-yulan" className="yulan"></svg-icon></template>

可以看到我们的图标已经可以使用了,其中 iconName 属性值就是我们在 iconfont 网站复制的 iconfont 的名称代码。如果想要该颜色或大小,可以自行传入一个类或者 color 属性。

除此之外,如果你有自己下载好的 svg 文件,那么也是可以通过上面方式引入的,只需要将 iconName 改为你自己本地的 svg 名称即可。

4.项目中使用 阿里字体

第一步:在项目 assets 目录下新建 iconfont 目录,在该目录下新建 font.css 文件,然后将 阿里字体在线地址中提供的代码全部复制过来

代码如下:

@font-face { font-family: "思源宋体 Regular"; font-weight: 400; src: url("//at.alicdn.com/wf/webfont/xh4nx6fdEXTy/0jXUXbuJbGMJTGE1-Z9ES.woff2") format("woff2"), url("//at.alicdn.com/wf/webfont/xh4nx6fdEXTy/BXimMREEQDbyuQ0kj-J5S.woff") format("woff"); font-display: swap;}@font-face { font-family: "思源宋体 Medium"; font-weight: 500; src: url("//at.alicdn.com/wf/webfont/xh4nx6fdEXTy/SYySrGV-pN0GFAJ-cof25.woff2") format("woff2"), url("//at.alicdn.com/wf/webfont/xh4nx6fdEXTy/Q9kaOvRthiBt50w-wLg7f.woff") format("woff"); font-display: swap;}

第二步:在main.ts文件中全局引入该文件

import '@/assets/font/font.css'

第三步:在页面中使用字体

.font-text {font-family: "思源宋体 Medium";}
本文链接地址:https://www.jiuchutong.com/zhishi/294470.html 转载请保留说明!

上一篇:Android Studio安装和使用教程(全文图解)

下一篇:Nā pali海岸上的Bright Eye海蚀洞,夏威夷考艾岛 (© jimkruger/Getty Images)(海岸边上)

  • 微信公众号文章的阅读量要如何提高?(微信公众号文章浏览记录)

    微信公众号文章的阅读量要如何提高?(微信公众号文章浏览记录)

  • 苹果12双卡打电话怎么切换(苹果12双卡打电话不能上网)

    苹果12双卡打电话怎么切换(苹果12双卡打电话不能上网)

  • word怎么删除横线(word怎么删除横线页眉)

    word怎么删除横线(word怎么删除横线页眉)

  • 美团怎么看商家电话号码(美团怎么看商家月销量)

    美团怎么看商家电话号码(美团怎么看商家月销量)

  • 快手作品不适宜公开怎么办(快手作品不适宜公开要删除吗)

    快手作品不适宜公开怎么办(快手作品不适宜公开要删除吗)

  • 手机可以投屏到平板上吗(手机可以投屏到车载屏幕上吗?)

    手机可以投屏到平板上吗(手机可以投屏到车载屏幕上吗?)

  • 锐龙和英特尔处理器对比(锐龙和英特尔处理器天梯图)

    锐龙和英特尔处理器对比(锐龙和英特尔处理器天梯图)

  • 荣耀30pro有没有90hz(荣耀30Pro有没有双扬声器)

    荣耀30pro有没有90hz(荣耀30Pro有没有双扬声器)

  • 还原设置是什么意思(还原所有设置是干什么用的)

    还原设置是什么意思(还原所有设置是干什么用的)

  • 变频器显示ol怎么解决(变频器显示olf)

    变频器显示ol怎么解决(变频器显示olf)

  • 小米8青春版怎么打开快充(小米8青春版怎么样值得买吗)

    小米8青春版怎么打开快充(小米8青春版怎么样值得买吗)

  • word突然打不开了(word突然打不开了怎么回事)

    word突然打不开了(word突然打不开了怎么回事)

  • airpods耳塞怎么换(airpods耳塞怎么清洗)

    airpods耳塞怎么换(airpods耳塞怎么清洗)

  • 怎么做数据分析表(wps怎么做数据分析)

    怎么做数据分析表(wps怎么做数据分析)

  • 手机网购怎么操作(手机网购怎么操作流程)

    手机网购怎么操作(手机网购怎么操作流程)

  • 手机qq字体设置在哪里(qq字体怎么设置手机系统字体)

    手机qq字体设置在哪里(qq字体怎么设置手机系统字体)

  • 微信怎么把收藏设置浮窗(微信怎么把收藏的东西删除)

    微信怎么把收藏设置浮窗(微信怎么把收藏的东西删除)

  • vue怎么增加照片时间(vue怎么增加照片时长)

    vue怎么增加照片时间(vue怎么增加照片时长)

  • 华为mate20 pro和mate30的区别(华为mate20pro和mate30pro对比)

    华为mate20 pro和mate30的区别(华为mate20pro和mate30pro对比)

  • 极米属于哪个公司(极米是国产吗)

    极米属于哪个公司(极米是国产吗)

  • 七天网怎么老是未授权(七天网络app为什么登不了)

    七天网怎么老是未授权(七天网络app为什么登不了)

  • iphone怎么设置屏幕自动关闭时间(iphone怎么设置屏幕不转动)

    iphone怎么设置屏幕自动关闭时间(iphone怎么设置屏幕不转动)

  • 荣耀9x什么时候上市的(荣耀9X什么时候升级鸿蒙3)

    荣耀9x什么时候上市的(荣耀9X什么时候升级鸿蒙3)

  • 魅族16怎么分享网络(魅族手机如何分享软件给别人?)

    魅族16怎么分享网络(魅族手机如何分享软件给别人?)

  • 手机字库坏了什么症状(手机字库坏了什么原因)

    手机字库坏了什么症状(手机字库坏了什么原因)

  • 苹果延时摄影怎么调速(苹果延时摄影怎么转换正常)

    苹果延时摄影怎么调速(苹果延时摄影怎么转换正常)

  • linux系统怎么判断路由转发功能是否开启?(linux 判断语句)

    linux系统怎么判断路由转发功能是否开启?(linux 判断语句)

  • 探究前端的跑马灯效果是如何用css实现的(前端处理map)

    探究前端的跑马灯效果是如何用css实现的(前端处理map)

  • python多线程处理大量文件数据(python多线程处理excel)

    python多线程处理大量文件数据(python多线程处理excel)

  • 金税盘服务费全额抵扣
  • 财产转让所得个人所得税优惠政策
  • 对方给我开的增值税专票丢失
  • 预收款开发票,不确认收入可以吗?
  • 个体工商户申报个税是按月按季度
  • 企业所得税季初和季末
  • 需要冲红的普通发票无法收回怎么办
  • 电器电子产品及配件入账
  • 建筑业一般计税税率
  • 企业运费发票需要缴纳印花税吗附政策依据
  • 当月发货必须当月开票吗
  • 食堂固定资产折旧年限
  • 产品成本的归集和分配是什么意思
  • 计提以前年度税金
  • 通用机打发票现在还有吗
  • 通用机打发票什么样子
  • 刷卡手续费可以开经纪代理服务费吗
  • 蔬菜批发的利润怎么算
  • 利润表反映了哪些情况
  • 公司支付劳务派遣人员工资账务处理
  • 小规模企业所得税优惠政策最新2023
  • 农村的生产经营是什么
  • 旅游门票报销怎么算
  • 小规模季报都报哪些税种
  • 小规模纳税人买车可以抵税吗
  • linux 网络故障
  • 其他业务收入和其他业务成本区别
  • 公益慈善事业捐赠个人所得税
  • 售后回购怎么做账务处理
  • 开发间接费用会计分录
  • 取得剧本使用费怎么做账
  • 应交增值税视频讲解
  • php文件修改后,打开还是显示以前的页面
  • 结转应付职工薪酬会计科目
  • 固定资产不计提折旧有什么影响
  • phpmyadmin无法登陆mysql数据库
  • 税前扣除项目什么意思
  • 房地产公司收到预售款缴纳印花税吗
  • 车间装修预算表
  • object的类有哪些
  • 借款利息收入开票
  • 销售收入是营业总收入么
  • 定额备用金制度报销时用什么科目
  • 母公司对子公司的控股比例
  • 税务系统重置密码
  • 现金流量表存货增加额怎么算
  • 增值税进项发票勾选认证流程
  • 外购存货的初始成本由买价加采购费用构成
  • 企业筹建期间是什么
  • 公司给员工付个税怎么交
  • 软件服务费计入管理费用哪个明细
  • 实习生个人所得税需要申报吗?
  • 预收款增值税纳税时间
  • 当期应纳增值税税额的计算流程
  • 酒店的布草怎么铺
  • 企业被列入经营异常名录可以注销吗
  • 2021年税控盘收费
  • 车辆按揭贷款需要什么
  • 收到技术服务费的账务处理
  • 多打的投资款怎么入账
  • asp.net select
  • 的四个步骤
  • win7系统删除文件夹怎么恢复
  • 升级怎么玩
  • winxp系统怎么设置开机密码
  • linux系统安装程序
  • jquery validation
  • python中字符
  • python 获取网页上文件地址
  • window.requestAnimationFrame是什么意思,怎么用
  • node 创建文件夹
  • javascript详细介绍
  • npm与nodejs
  • python里面颜色
  • javascript入门书
  • Developing for Android, III: The Rules: Performance
  • jquery提交
  • 季度企业所得税分录
  • 深圳买新房契税一般什么时候交比较好
  • 税务之星ii驱动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设