下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第基于Vue实现自定义组件的方式引入图标在项目开发中,使用图标的方式有很多种,可以在iconfont上面找到合适的图标,通过http或者直接下载使用,这里我分享一种通过实现自定义组件的方式引入图标。
搭建环境
这里通过@vue/cli4.5.13新建项目,并且需要安装依赖svg-sprite-loader,用来处理对应的svg图标,方便我们使用。
安装:npminstall--save-devsvg-sprite-loader
配置vue.config.js
在安装svg-sprite-loader后,新建vue.config.js来配置依赖:
//vue.config.js
const{resolve}=require('path')
module.exports={
chainWebpack(config){
config
.module
.rule('svg')
.exclude
.add(resolve('src/icons'))
.end()
config
.module
.rule('icons')
.test(/\.svg$/)
.include
.add(resolve('src/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId:'icon-[name]'
这里通过chainWebpack来做了两项配置:
第一个是让原来的其他处理svg的依赖不处理src/icons下我们的自定义图标文件
通过svg-sprite-loader来处理自定义的图标文件,options里面的设置表示,生成的svg的symbolId为icon和文件名的拼接。
新建图标组件
在components目录下新建一个SvgIcon.vue文件:
template
!--aria-hidden,帮助残障人士阅读(设备读取内容时会跳过这个标签以免混淆)--
svgaria-hidden="true":width="size":height="size":fill="fillColor"
use:xlink:href="iconName"rel="externalnofollow"/use
/svg
/template
scriptlang="ts"
import{PropType,toRefs}from'vue'
exportdefault{
props:{
size:{
type:NumberasPropTypenumber,
default:14
fillColor:{
type:StringasPropTypestring,
default:'#000'
iconName:{
type:StringasPropTypestring,
required:true
setup(props:any){
const{size,fillColor,iconName:_iconName}=toRefs(props)
consticonName=`#${_iconName.value}`
return{
size,
fillColor,
iconName
/script
然后,新建一个icons目录,并且新建一个index文件,用来挂在组件和引入svg图标:
//index.ts
importSvgIconfrom'@/components/SvgIcon.vue'
import{App}from'vue'
exportdefault(app:App)={
ponent('svg-icon',SvgIcon)
constctx=require.context('./svg',false,/\.svg$/)
con
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年山东省青岛疗养院山东康复中心医护人员招聘笔试备考试题及答案详解
- 2026年山东省肿瘤医院医护人员招聘笔试参考题库及答案详解
- 2026年天津市武清区中医医院医护人员招聘笔试备考试题及答案详解
- 2026年九江市妇幼保健院医护人员招聘考试备考试题及答案详解
- 2026年长沙市第四医院医护人员招聘考试备考试题及答案详解
- 2026年天津铁路中心医院医护人员招聘考试参考试题及答案详解
- 2026年宁波市中医院医护人员招聘考试备考试题及答案详解
- 2026年洛阳市第二中医院医护人员招聘笔试备考题库及答案详解
- 2026年温州市中西医结合医院医护人员招聘考试参考题库及答案详解
- 2026年江西省精神病院医护人员招聘笔试参考试题及答案详解
- 初三道德与法治中考复习:开放性设问之倡议书、标语与活动方案专项突破教案
- 2025年合肥高新区社区工作者招聘考试试卷真题
- 2025年荣耀AI隐私安全白皮书
- 2026届山东省聊城市临清市重点达标名校中考押题生物预测卷含解析
- 2026年高考(湖南卷)化学试题及答案
- 2025 地中海气候的特点和成因课件
- 围手术期营养支持指南
- 2024年广东省中考语文试卷附真题答案
- 快消品渠道营销策略研究
- 人教版高中化学选择性必修3 第二章测评(含答案)
- 麦凯66表格(完全版)
评论
0/150
提交评论