- REDISIGN_TODO.md: 标记全部 16 个组件迁移完成 - ICON_SYSTEM.md: 添加 6 个新图标文档 - README.md: 更新技术栈和范式示例 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.1 KiB
5.1 KiB
图标系统使用指南
概述
本项目使用 SVG 图标替代 emoji,提供更专业、统一的视觉体验。
使用方法
方式一:使用 IconLibrary 组件(推荐)
<script setup>
import IconLibrary from '@/components/icons/IconLibrary.vue'
</script>
<template>
<!-- 基本使用 -->
<IconLibrary name="edit" :size="20" />
<!-- 不同尺寸 -->
<IconLibrary name="save" :size="16" />
<IconLibrary name="delete" :size="24" />
<!-- 配合文本 -->
<button class="btn">
<IconLibrary name="save" :size="16" />
<span>保存</span>
</button>
</template>
方式二:直接使用 SVG
<template>
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</svg>
</template>
可用图标列表
写作相关
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
edit |
编辑/写作 | ✏️ |
file-text |
文档 | 📄 |
document |
文件 | 📝 |
article |
文章 | 📰 |
format-text |
文本格式 | 📃 |
数据和素材
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
database |
数据库 | 🗄️ |
folder |
文件夹 | 📁 |
chart |
图表 | 📊 |
设置和工具
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
settings |
设置 | ⚙️ |
gear |
齿轮 | 🔧 |
操作
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
save |
保存 | 💾 |
copy |
复制 | 📋 |
trash |
删除 | 🗑️ |
delete |
删除 | ❌ |
close |
关闭 | ✕ |
check |
确认 | ✅ |
导航
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
home |
首页 | 🏠 |
menu |
菜单 | 📋 |
sidebar |
侧边栏 | 📂 |
搜索和筛选
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
search |
搜索 | 🔍 |
filter |
筛选 | 🔎 |
状态和通知
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
warning |
警告 | ⚠️ |
error |
错误 | ❌ |
info |
信息 | ℹ️ |
success |
成功 | ✅ |
分析和比较
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
compare |
对比 | ⚖️ |
analysis |
分析 | 📈 |
sparkles |
AI/魔法 | ✨ |
时间和历史
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
history |
历史 | 🕐 |
clock |
时间 | ⏰ |
添加和移除
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
add / plus |
添加 | ➕ |
minus |
减少 | ➖ |
expand |
展开 | ⬇️ |
collapse |
折叠 | ⬆️ |
其他
| 图标名称 | 说明 | 替代的 emoji |
|---|---|---|
download |
下载 | 📥 |
upload |
上传 | 📤 |
refresh |
刷新 | 🔄 |
loading |
加载中 | ⏳ |
list |
列表 | 📋 |
star |
星标/收藏 | ⭐ |
lightbulb |
灯泡/提示 | 💡 |
pin |
图钉/固定 | 📌 |
clipboard |
剪贴板 | 📋 |
microphone |
麦克风 | 🎙️ |
bookmark |
书签 | 🔖 |
迁移示例
Before (使用 emoji)
<button class="btn">
💾 保存
</button>
<div class="panel">
⚙️ 设置
</div>
After (使用 SVG 图标)
<button class="btn">
<IconLibrary name="save" :size="16" />
<span>保存</span>
</button>
<div class="panel">
<IconLibrary name="settings" :size="20" />
<span>设置</span>
</div>
样式建议
图标尺寸
/* 按钮内图标 */
.btn-icon { size: 16px; }
/* 标题图标 */
.title-icon { size: 20px; }
/* 大图标 */
.large-icon { size: 24px; }
图标间距
<!-- 图标与文字之间留有空隙 -->
<button class="btn">
<IconLibrary name="save" :size="16" />
<span class="ml-2">保存</span>
</button>
图标颜色
图标默认使用 currentColor,会继承父元素的 color 属性:
/* 主要操作图标 */
.btn-primary .icon {
color: var(--accent-primary);
}
/* 危险操作图标 */
.btn-danger .icon {
color: var(--accent-danger);
}
添加新图标
如果需要添加新图标,请按以下步骤:
- 在
IconLibrary.vue的icons对象中添加新图标 - 提供 SVG path 数据
- 更新此文档
'your-icon': {
paths: ['M12 2L2 22h20L12 2z'], // 示例 path
viewBox: '0 0 24 24'
}
注意事项
- 一致性:在整个应用中使用相同的图标系统
- 语义化:选择符合用户预期的图标
- 尺寸:保持相近场景的图标尺寸一致
- 对齐:使用
flex布局确保图标与文本正确对齐 - 可访问性:为图标提供
aria-label或配合文字使用
<!-- 推荐:图标 + 文字 -->
<button>
<IconLibrary name="save" :size="16" aria-hidden="true" />
<span>保存</span>
</button>
<!-- 如需单独使用,添加 aria-label -->
<button aria-label="保存文档">
<IconLibrary name="save" :size="20" />
</button>