基于Vue实现自定义组件的方式引入图标_第1页
基于Vue实现自定义组件的方式引入图标_第2页
基于Vue实现自定义组件的方式引入图标_第3页
基于Vue实现自定义组件的方式引入图标_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第基于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论