首页 > 其他分享 >Vue3 + vite 项目自定义一个svg-icon组件

Vue3 + vite 项目自定义一个svg-icon组件

时间:2024-04-18 14:25:31浏览次数:21  
标签:String 自定义 icons svg Vue3 height props vite

1. 安装vite-plugin-svg-icons插件

npm i vite-plugin-svg-icons -D

2.vite.config.ts中配置

import path from "path";
import { createSvgIconsPlugin } from "vite-plugin-svg-icons";
export default defineConfig({
  plugins: [
    ......
    createSvgIconsPlugin({
      iconDirs: [path.resolve(process.cwd(), "src/assets/svgs")],
      // 指定symbolId格式
      symbolId: "[name]",
      customDomId: "turing-planet-svgs", // 避免多项目互相影响
    })
  ],
  ......
})

3.main.ts引入

//svg插件需要配置代码
import 'virtual:svg-icons-register';

4.在src/assets中新建目录svgs, 将所有的的svg图片放在svgs文件中

 5.封装svg-icon.vue组件

<template>
  <svg :class="className" :style="{ width, height: _height }">
    <use :xlink:href="iconName"></use>
  </svg>
</template>

<script setup lang="ts">
import { computed } from "vue";
const props = defineProps({
  name: { type: String, require: true },
  width: { type: String, default: "16px" },
  height: { type: String },
  className: { type: String },
});
const _height = computed(() => {
  return props.height ? props.height : props.width;
});
const iconName = computed(() => {
  return `#${props.name}`;
});
</script>

<style lang="scss" scoped></style>

6.全局注册svg-icon组件

7.vue文件中使用

<svg-icon name="file-icon" width="28px" height="20px"/>

 

标签:String,自定义,icons,svg,Vue3,height,props,vite
From: https://www.cnblogs.com/liuminxiu0707/p/18143399

相关文章

  • vue3+elementplus+axios+router的入门项目总结
    一、使用vite方式创建项目:1、创建空文件夹,用vscode打开空文件夹,终端上运行如下命令$npminitvite-app[项目名]:初始化项目$cd[项目名]:进入项目$npminstall:安装项目依赖$npmrundev:启动项目2、启动项目后会出现访问地址: 3、进入访问地址: 二、引入elementpuls......
  • 自定义 AuthorizationMiddleware 的行为
    在其它角色、策略权限验证后,系统再执行中间件,中间件成功后,最后才执行调用控制器方法。其它策略-》授权中间件-》控制器方法应用可以注册 IAuthorizationMiddlewareResultHandler,以自定义 AuthorizationMiddleware 处理授权结果的方式。应用可将 IAuthorizationMiddlewareRe......
  • Vue3 使用setup语法糖时, 组件name命名
    1.多使用一个<script>标签命名<script>exportdefault{name:'Person'}</script><scriptsetup>...</script>2.使用插件安装插件vite-plugin-vue-setup-extendpnpminstallvite-plugin-vue-setup-extend-D在vite.con......
  • 面试官:来说说vue3是怎么处理内置的v-for、v-model等指令?
    前言最近有粉丝找到我,说被面试官给问懵了。粉丝:面试官上来就问“一个vue文件是如何渲染成浏览器上面的真实DOM?”,当时还挺窃喜这题真简单。就简单说了一下先是编译成render函数、然后根据render函数生成虚拟DOM,最后就是根据虚拟DOM生成真实DOM。按照正常套路面试官接着会问vue......
  • vue3 ts 建立项目
    1、安装pnpmnpminstallpnpm-g2、安装vitepnpminstallvite-D3、在需要的文件夹下建项目npmcreatevite@latest 打开4、main.ts引入element-plusnpminstallelement-plus--savemain.tsimportElementPlusfrom'element-plus'import*asElementPlusIconsVue......
  • 『手撕Vue-CLI』自定义指令
    前言最近一直忙于工作项目上面的事情,精力少了很多,所以一直没更文,很多技术点,都做在我自己的Notion笔记库中,今天,我决定要改变一下方式,所以又重新来更文了。在前面的章节中已经分享了VueRouter,实现了VueRouter之后,到此为止,Vue,Vuex,VueRouter就都已经搞定了。到这里,大家应该......
  • vue3 快速入门系列 —— 组件通信
    vue3快速入门系列-组件通信组件通信在开发中非常重要,通信就是你给我一点东西,我给你一点东西。本篇将分析vue3中组件间的通信方式。Tip:下文提到的绝大多数通信方式在vue2中都有,但是在写法上有一些差异。准备环境在vue3基础上进行。新建三个组件:爷爷、父亲、孩子A、......
  • .net 通过特性及继承IValidatableObject完成自定义表单验证
    Model:publicclassPartAItem:IValidatableObject{[Required]publicstringTOKEN{get;set;}[Required]publicstringPROJECT_ID{get;set;}publicstringPART{get;set;}[Required]publicstringFORM_ID{get;set;......
  • 点击菜单生成tabs(vue3.0)
    1.安装vuex npminstallvuex@next--save在main.js中引用vuex2.在main.js同级目录新建store/store.js文件 代码:import{createStore}from'vuex'exportdefaultcreateStore({ state:{ tabsList:[] }, mutations:{ addTab(state,tab){ //判断是否......
  • 08 Vue3项目搭建后台管理系统
    项目配置elementPlus1.下载安装npminstallelement-plus@element-plus/icons-vue2.main.ts全局注册import{createApp}from'vue';import{createPinia}from'pinia';//1.引入elementPlusimportElementPlusfrom'element-plus';//......