vue项目中怎样引入图标,应用什么方法
Admin 2022-07-16 群英技术资讯 1017 次浏览
这篇文章将为大家详细讲解有关“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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要讲解Vue3 集成HTTP库axios的相关内容,本文讲围绕如何利用Vue3 集成HTTP库axios的相关资料展开文章,需要的朋友可以参考一下,希望对你有所帮助
这篇文章主要为大家介绍了Vue项目的优化打包,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
JS如何进行按位取反计算?一些朋友可能不是了解什么是按位取反运算,按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果。那么JavaScript中如何来实现呢?下面我们一起来看看。
这篇文章给大家分享的是React实现文件转base64的方法。小编觉得挺实用的,因此分享给大家做个参考,文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
草稿二:Node.jsChildProcess模块GitHub TOP ChildProcess模块来自《JavaScript标准参考教程(alpha)》,by阮一峰目录exec()execSync()execFile()spawn()fork()send()参考链接child_process模块用于新建子进程。子进程的运行结果储存在系
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008