vue3项目导入本地图标

ops/2024/10/11 5:21:58/

一、下载图标库到本地

例如阿里图标库:iconfont-阿里巴巴矢量图标库

  1. 选所需图标收藏入库

2.自己的图标库下载入库的图标

3.下载的压缩包解压到本地,并将解压的图标文件拖拽进新创建的svg文件夹中

二、安装插件

1.安装svg图标引用所需插件

//命令行
npm install fast-glob -D
npm install vite-plugin-svg-icons -D

main.js或者main.ts引入注册脚本

// 引入注册脚本
import 'virtual:svg-icons-register';

在vite.config.js文件中配置插件:

方式一:

***
import path from 'path';
import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';
const pathSrc = path.resolve(__dirname, "src");
export default defineConfig({plugins: [***// SvgIcon插件配置(本地图标)createSvgIconsPlugin({// 指定图标文件夹(文件夹路径根据实际情况更改)iconDirs:[path.resolve(pathSrc,'assets/icons/svg'),path.resolve(pathSrc,'assets/error')],resolve('src/assets/error')],// 指定symbolId格式symbolId:'icon-[dir]-[name]',}),],
});

方式二:

***
import path from 'path';
import {createSvgIconsPlugin} from 'vite-plugin-svg-icons';
const resolve = (dir) => path.resolve(process.cwd(), dir);// https://vitejs.dev/config/
export default defineConfig({plugins: [***// svgIcon导入(本地图标)createSvgIconsPlugin({// 指定图标文件夹(文件夹路径根据实际情况更改)iconDirs:[resolve('src/assets/icons/svg'), resolve('src/assets/error')],// 指定symbolId格式symbolId:'icon-[dir]-[name]',}),],
});

三、vue项目中配置图标

1.将存有图标的svg文件夹拷贝到vue项目src/assets/icons目录下

注意:icons目录需要自己创建

2.在 src /components文件夹目录下,创建一个svg组件

内容如下:

<template><svg aria-hidden="true" class="svg-icon" :style="'width:' + size + ';height:' + size"><use :xlink:href="symbolId" :fill="color" /></svg></template><script setup>import { computed } from 'vue'const props = defineProps({prefix: {type: String,default: 'icon'},iconName: {type: String,required: false,default: ''},color: {type: String,default: ''},size: {type: String,default: '1em'}})const symbolId = computed(() => `#${props.prefix}-${props.iconName}`)</script><style scoped>.svg-icon {display: inline-block;width: 1em;height: 1em;overflow: hidden;vertical-align: -0.15em; /* 因icon大小被设置为和字体大小一致,而span等标签的下边缘会和字体的基线对齐,故需设置一个往下的偏移比例,来纠正视觉上的未对齐效果 */outline: none;fill: currentcolor; /* 定义元素的颜色,currentColor是一个变量,这个变量的值就表示当前元素的color值,如果当前元素未设置color值,则从父元素继承 */}</style>

3.在main.js或者main.ts中配置全局

import { createApp } from 'vue'
import App from './App.vue'
// 本地图标
import svgIcon from '@/components/SvgIcon/index.vue';const app = createApp(App);***app.component('svg-icon',svgIcon);app.mount('#app');

四、使用

示例:

代码:

<template>
***
<div  class="iconBox" title="测量"@click="boxClick('measure')"><svg-icon iconName="celiang" class="icon"  />
</div>
***
</template>
<style lang="less" scoped>.iconBox {width: 32px;height: 32px;line-height: 35px;cursor: pointer;}.iconBox .icon {width: 20px !important;height: 20px !important;color: #6e6e6e;}
</style >


http://www.ppmy.cn/ops/86967.html

相关文章

OS—文件系统

目录 一. 文件系统结构I/O 控制层基本文件系统文件组织模块逻辑文件系统 二. 文件系统布局文件系统在磁盘中的结构主引导记录(MasterBoot Record,MBR)引导块(boot block)超级块(super block)文件系统中空闲块的信息 文件系统在内存中的结构 三. 外存空间管理空闲表法空闲链表法…

匿名内部类

一个类的内部又完整的嵌套了另一个类结构&#xff0c;被嵌套的类称为内部类&#xff0c;嵌套其他的类称为外部类。 类的五大成员&#xff1a;属性、方法、构造器、代码块、内部类 内部类最大的特点的就是直接访问私有属性&#xff0c;并且可以体现类鱼类之间的包含关系。 基本…

Java 枚举详解:看完立马掌握!

大家好&#xff0c;我是小欧&#xff01; 今天我们来聊聊Java中的枚举&#xff08;Enum&#xff09;。枚举是Java中一种特殊的类型&#xff0c;用来表示一组固定的常量。如果你还没接触过枚举或者对它了解不多&#xff0c;别担心&#xff0c;看完这篇文章&#xff0c;你一定会对…

理解轮询与WebSocket:更新HTML内容的两种方式

理解轮询与WebSocket&#xff1a;更新HTML内容的两种方式 在开发Web应用时&#xff0c;更新页面内容的方式有很多&#xff0c;其中轮询&#xff08;Polling&#xff09;和WebSocket是两种常见的方法。了解这两种方法的区别、工作原理及其优缺点&#xff0c;有助于你选择最适合…

解决新Windows系统下Git克隆连接超时问题

最近&#xff0c;我在Windows系统的电脑上&#xff0c;尝试使用Git克隆项目时&#xff0c;不断遇到连接超时的错误。无论如何尝试调整环境变量或配置代理&#xff0c;都未能解决问题。因此&#xff0c;开始了一系列的问题排查。 排查步骤 首先&#xff0c;我在Git Bash终端使…

C语言系统调用linux文件系统

在C语言中&#xff0c;open、write和read函数是系统调用&#xff08;system calls&#xff09;&#xff0c;它们直接由操作系统提供&#xff0c;用于底层的文件操作。这些函数是UNIX和类UNIX系统&#xff08;如Linux&#xff09;中的标准接口&#xff0c;不同于C标准库中的文件…

reduceByKey 函数详解

reduceByKey 函数详解 实现原理 reduceByKey 函数主要用于处理分布式数据集。它接收两个操作符作为参数&#xff1a; keySelector&#xff1a;这是一个映射函数&#xff0c;用于从输入元素中提取键。 valueReducer&#xff1a;这是另一个函数&#xff0c;用于将具有相同键的…

mac环境Qt Creator报错:Warning: You are changing a read-only file.

mac环境Qt Creator报错&#xff1a; Warning: You are changing a read-only file. 权限许可 文件权限问题 修改文件夹权限的基本语法&#xff1a; 打开终端&#xff1a;打开 macOS 中的终端应用程序。 sudo chmod -R permissions folder_pathchmod 是改变文件或文件夹权限…