news 2026/8/22 11:13:32

Vue—— Vue3 SVG 图标系统设计与实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue—— Vue3 SVG 图标系统设计与实现

背景问题:
需要统一管理项目中的图标资源。

方案思考:
使用 SVG 图标系统,便于管理和使用。

具体实现:
首先安装必要的依赖:

npminstallvite-plugin-svg-icons

配置 Vite 插件:

// vite.config.jsimport{defineConfig}from'vite'import{createSvgIconsPlugin}from'vite-plugin-svg-icons'importpathfrom'path'exportdefaultdefineConfig({plugins:[createSvgIconsPlugin({// 指定需要缓存的图标文件夹iconDirs:[path.resolve(process.cwd(),'src/assets/icons')],// 指定symbolId格式symbolId:'icon-[dir]-[name]',})],})

创建 SVG 图标组件:

<!-- components/SvgIcon.vue --> <template> <svg :class="svgClass" aria-hidden="true" v-on="$attrs"> <use :href="iconName" :fill="color" /> </svg> </template> <script setup> import { computed } from 'vue' const props = defineProps({ name: { type: String, required: true }, color: { type: String, default: '#333' }, className: { type: String, default: '' } }) const iconName = computed(() => `#icon-${props.name}`) const svgClass = computed(() => { if (props.className) { return `svg-icon ${props.className}` } return 'svg-icon' }) </script> <style scoped> .svg-icon { width: 1em; height: 1em; position: relative; fill: currentColor; vertical-align: -2px; } </style>

在 main.js 中注册插件:

// main.jsimport{createApp}from'vue'import{register}from'vite-plugin-svg-icons/client'constapp=createApp(App)// 注册 SVG 图标register(app)

使用示例:

<template> <div class="icon-demo"> <SvgIcon name="home" /> <SvgIcon name="user" /> <SvgIcon name="setting" /> <SvgIcon name="search" color="#409EFF" /> </div> </template> <script setup> import SvgIcon from '@/components/SvgIcon.vue' </script>

完整的图标文件结构:

src/ assets/ icons/ home.svg user.svg setting.svg search.svg

其中 SVG 文件示例:

<!-- src/assets/icons/home.svg --><svgxmlns="http://www.w3.org/2000/svg"viewBox="0 0 1024 1024"><pathd="M1024 512c0 282.77-229.23 512-512 512S0 794.77 0 512 229.23 0 512 0s512 229.23 512 512z"fill="#2c2c2c"/></svg>
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 18:20:35

Cute_Animal_For_Kids_Qwen_Image上线记:一个下午搞定部署

Cute_Animal_For_Kids_Qwen_Image上线记&#xff1a;一个下午搞定部署 你有没有想过&#xff0c;只需要输入一句话&#xff0c;就能生成一张专为孩子设计的可爱动物图片&#xff1f;现在&#xff0c;这个想法已经变成了现实。Cute_Animal_For_Kids_Qwen_Image 正式上线了——一…

作者头像 李华
网站建设 2026/8/21 18:20:33

复杂场景文本提取难?试试DeepSeek-OCR-WEBUI大模型镜像

复杂场景文本提取难&#xff1f;试试DeepSeek-OCR-WEBUI大模型镜像 在日常办公、档案管理、票据处理等场景中&#xff0c;我们经常需要从图片中提取文字。传统OCR工具在面对模糊、倾斜、低分辨率或背景复杂的图像时&#xff0c;往往力不从心——识别不准、漏字断行、格式混乱等…

作者头像 李华
网站建设 2026/8/22 2:07:08

一键部署NewBie-image-Exp0.1:3.5B模型动漫生成全攻略

一键部署NewBie-image-Exp0.1&#xff1a;3.5B模型动漫生成全攻略 [【立即体验镜像】NewBie-image-Exp0.1 专为动漫创作优化的3.5B参数高质量生成模型&#xff0c;开箱即用&#xff0c;无需配置 镜像地址&#xff1a;https://ai.csdn.net/mirror/detail/2874?utm_sourcemirr…

作者头像 李华
网站建设 2026/8/21 18:20:34

DeepSeek-R1-Distill-Qwen-1.5B输出控制:token限制与截断策略

DeepSeek-R1-Distill-Qwen-1.5B输出控制&#xff1a;token限制与截断策略 你有没有遇到过这样的情况&#xff1a;明明给模型写了一段清晰的提示词&#xff0c;结果它要么话说到一半就停了&#xff0c;要么生成的内容又长又啰嗦&#xff0c;关键信息反而被埋在一堆文字里&#…

作者头像 李华
网站建设 2026/8/21 18:20:36

SGLang后端运行时优化揭秘,调度效率为何更高

SGLang后端运行时优化揭秘&#xff0c;调度效率为何更高 1. 引言&#xff1a;大模型推理的性能瓶颈与SGLang的定位 当你在部署一个大语言模型&#xff08;LLM&#xff09;服务时&#xff0c;是否遇到过这些问题&#xff1f; 多个用户同时提问&#xff0c;响应速度越来越慢&a…

作者头像 李华