vue项目中怎样引入图标,应用什么方法
Admin 2022-07-16 群英技术资讯 1428 次浏览
这篇文章将为大家详细讲解有关“vue项目中怎样引入图标,应用什么方法”的知识,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在项目开发中,使用图标的方式有很多种,可以在iconfont上面找到合适的图标,通过http或者直接下载使用,这里我分享一种通过实现自定义组件的方式引入图标。
这里通过@vue/cli 4.5.13新建项目,并且需要安装依赖svg-sprite-loader,用来处理对应的svg图标,方便我们使用。
安装: npm install --save-dev svg-sprite-loader
在安装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来做了两项配置:
在components目录下新建一个SvgIcon.vue文件:
<template>
<i class="icon">
<!-- aria-hidden, 帮助残障人士阅读(设备读取内容时会跳过这个标签以免混淆) -->
<svg aria-hidden="true" :width="size" :height="size" :fill="fillColor">
<use :xlink:href="iconName" rel="external nofollow" ></use>
</svg>
</i>
</template>
<script lang="ts">
import { PropType, toRefs } from 'vue'
export default {
props: {
size: {
type: Number as PropType<number>,
default: 14
},
fillColor: {
type: String as PropType<string>,
default: '#000'
},
iconName: {
type: String as PropType<string>,
required: true
}
},
setup(props: any) {
const { size, fillColor, iconName: _iconName } = toRefs(props)
const iconName = `#${_iconName.value}`
return {
size,
fillColor,
iconName
}
}
}
</script>
然后,新建一个icons目录,并且新建一个index文件,用来挂在组件和引入svg图标:
// index.ts
import SvgIcon from '@/components/SvgIcon.vue'
import { App } from 'vue'
export default (app: App) => {
app.component('svg-icon', SvgIcon)
}
const ctx = require.context('./svg', false, /\.svg$/)
const requestAll = (ctx: __WebpackModuleApi.RequireContext) => ctx.keys().forEach(ctx)
requestAll(ctx)
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import installSvgIcon from '@/icons/index'
const app = createApp(App)
installSvgIcon(app)
app.mount('#app')
这个文件做了两件事:
首先,我们要在icons/svg目录下存放svg图标文件(在iconfont上找自己需要的);
然后,就可以在其他地方使用啦:
<template> <img alt="Vue logo" src="./assets/logo.png"> <svg-icon icon-name="icon-dashboard"></svg-icon> <HelloWorld msg="Welcome to Your Vue.js + TypeScript App"/> </template>
直接通过组件svg-icon的方式引入,然后传入icon-name即可,icon-name的值由icon拼接svg文件名组成。
这种自定义方式引入svg图标的方式,还是挺方便的,想要加上一个图标的时候,几步即可:
但是,修改样式时不能通过css来修改,这点就不太方便了。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
JavaScript正则表达式的用法是什么?在实际的项目中,常常会使用到JavaScript正则表达式,对此这篇文章就给大家来分享一下JavaScript正则表达式的使用,对新手学习JavaScript正则表达式有一定的帮助,需要的朋友可以参考。
jQuery怎样实现任意点击隐藏div的效果?我们一些网站经常能看到通过点击任意位置后关闭打开div的效果,这样的好处是能提高用户的体验,那么具体怎样实现这一效果呢?
JS中判断对象为空有哪些方法?有时候我们需要对象是否为空,而JS中判断对象为空的方法有很多,下面小编就给大家介绍五种方法,感兴趣的朋友可以参考学习。
Nodejs中怎么操作文件?下面本篇文章带大家聊聊怎么使用Nodejs读写文件,希望对大家有所帮助!
这篇文章主要给大家分享怎样使用JS怎样实现数据监听的方法,下文实现步骤和讲解有一定的借鉴价值,感兴趣的朋友可以参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008