删除不需要的文件及提交移动端的代码

This commit is contained in:
zlwu committed 2025-08-06 16:01:27 +08:00
1 parent 86f65df783
commit 134f711349
751 files changed
+3888 -115501

No files matched your search

@@ -0,0 +1,348 @@
# 📚 图标管理系统使用指南
## 🎯 概述
项目采用了 **双图标系统**:
- **iconfont 自定义图标** (推荐) - 基于 SVG data URI 的轻量级图标系统
- **uview-plus 图标** (辅助) - UI库自带图标,部分图标存在显示问题
## 📁 文件结构
```
mobile/src/static/fonts/
├── iconfont.css # 主图标文件(SVG data URI)
├── iconfont.ttf # 字体文件(可选)
└── iconfont.woff # 字体文件(可选)
mobile/src/
├── main.js # 引入图标CSS
├── pages/iconfont-demo/ # 图标演示页面
└── pages/uview-icon-test/ # uview图标问题测试页面
```
## 🚀 添加新图标 - 超级简单!
### 方法一:SVG Data URI(推荐)
**优势**:
- ✅ 无需下载字体文件
- ✅ 支持彩色图标
- ✅ 完美适配所有平台
- ✅ 加载速度最快
**操作步骤**:
#### 1. 从 iconfont.cn 下载 SVG
1. 访问 [iconfont.cn](https://www.iconfont.cn/)
2. 搜索需要的图标
3. 下载 SVG 格式
#### 2. 转换为 data URI
使用在线工具或以下代码:
```javascript
// SVG 转 data URI 工具函数
function svgToDataUri(svgContent) {
const encoded = encodeURIComponent(svgContent)
.replace(/'/g, '%27')
.replace(/"/g, '%22');
return `data:image/svg+xml;charset=utf8,${encoded}`;
}
// 示例
const svgContent = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'>
<path d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z'/>
</svg>`;
```
#### 3. 添加到 CSS 文件
在 `mobile/src/static/fonts/iconfont.css` 中添加:
```css
/* 新增图标示例 */
.icon-add-circle {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z'/%3E%3C/svg%3E");
}
```
#### 4. 在页面中使用
```vue
<template>
<text class="iconfont icon-add-circle" style="font-size: 24px; color: #1890ff;"></text>
</template>
```
### 方法二:iconfont.cn 项目同步(适合大量图标)
#### 1. 创建 iconfont 项目
1. 在 iconfont.cn 注册账号
2. 创建新项目
3. 添加需要的图标到项目
#### 2. 下载代码
1. 点击"下载至本地"
2. 选择 "Font class" 或 "Unicode" 方式
3. 下载解压得到文件
#### 3. 替换项目文件
```bash
# 将下载的文件复制到项目
cp iconfont.css mobile/src/static/fonts/
cp iconfont.ttf mobile/src/static/fonts/
cp iconfont.woff mobile/src/static/fonts/
```
#### 4. 更新字体引用(如需要)
在 `uni.scss` 或相关文件中更新字体路径:
```scss
@font-face {
font-family: 'iconfont';
src: url('./static/fonts/iconfont.woff') format('woff'),
url('./static/fonts/iconfont.ttf') format('truetype');
}
```
## 🎨 使用规范
### 基础用法
```vue
<template>
<!-- 方式1:直接使用class -->
<text class="iconfont icon-user"></text>
<!-- 方式2:自定义样式 -->
<text class="iconfont icon-setting custom-icon"></text>
<!-- 方式3:动态样式 -->
<text
class="iconfont icon-home"
:style="{
fontSize: '24px',
color: iconColor
}"
></text>
</template>
<style>
.custom-icon {
font-size: 20px;
color: #52c41a;
}
</style>
```
### 响应式尺寸
```vue
<template>
<!-- 小图标 -->
<text class="iconfont icon-user icon-sm"></text>
<!-- 中等图标 -->
<text class="iconfont icon-user icon-md"></text>
<!-- 大图标 -->
<text class="iconfont icon-user icon-lg"></text>
</template>
<style>
.icon-sm { width: 16px; height: 16px; font-size: 16px; }
.icon-md { width: 24px; height: 24px; font-size: 24px; }
.icon-lg { width: 32px; height: 32px; font-size: 32px; }
</style>
```
## 📋 当前可用图标列表
### 基础图标
- `icon-user` - 用户
- `icon-lock` - 锁定
- `icon-eye` - 显示
- `icon-eye-close` - 隐藏
- `icon-home` - 首页
- `icon-setting` - 设置
### 操作图标
- `icon-add` - 添加
- `icon-close` - 关闭
- `icon-check` - 确认
- `icon-search` - 搜索
- `icon-arrow-right` - 右箭头
### 功能图标
- `icon-message` - 消息
- `icon-phone` - 电话
- `icon-mail` - 邮件
- `icon-login` - 登录
## 🔧 管理工具
### 在线 SVG 编辑器
- [SVG Editor](https://svg-edit.github.io/svgedit/)
- [Boxy SVG](https://boxy-svg.com/)
### Data URI 转换工具
```javascript
// 工具函数:SVG 转 data URI
function createSvgDataUri(svgPath, viewBox = "0 0 24 24") {
const svg = `<svg xmlns='http://www.w3.org/2000/svg' viewBox='${viewBox}' fill='currentColor'><path d='${svgPath}'/></svg>`;
return `url("data:image/svg+xml;charset=utf8,${encodeURIComponent(svg)}")`;
}
// 使用示例
const newIconCSS = `
.icon-new-feature {
background-image: ${createSvgDataUri("M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10...")};
}
`;
```
### 批量添加脚本
```javascript
// 批量生成图标CSS的脚本
const icons = [
{ name: 'star', path: 'M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z' },
{ name: 'heart', path: 'M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z' }
];
function generateIconCSS(icons) {
return icons.map(icon => `
.icon-${icon.name} {
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='${icon.path}'/%3E%3C/svg%3E");
}`).join('\n');
}
```
## 🎯 最佳实践
### 1. 命名规范
```css
/* ✅ 推荐命名 */
.icon-user /* 功能性图标 */
.icon-user-add /* 带操作的图标 */
.icon-arrow-right /* 方向性图标 */
/* ❌ 避免命名 */
.icon-1 /* 无意义编号 */
.icon-temp /* 临时命名 */
```
### 2. 颜色管理
```scss
// 使用CSS变量管理图标颜色
:root {
--icon-primary: #1890ff;
--icon-success: #52c41a;
--icon-warning: #faad14;
--icon-error: #ff4d4f;
}
.icon-primary { color: var(--icon-primary); }
.icon-success { color: var(--icon-success); }
.icon-warning { color: var(--icon-warning); }
.icon-error { color: var(--icon-error); }
```
### 3. 尺寸规范
```scss
// 标准尺寸系统
.icon-xs { width: 12px; height: 12px; } // 超小
.icon-sm { width: 16px; height: 16px; } // 小
.icon-md { width: 24px; height: 24px; } // 中(默认)
.icon-lg { width: 32px; height: 32px; } // 大
.icon-xl { width: 48px; height: 48px; } // 超大
```
## 🔄 迁移指南
### 从 uview 图标迁移到 iconfont
```vue
<!-- 迁移前 -->
<u-icon name="logout" size="20" color="#fff"></u-icon>
<!-- 迁移后 -->
<text class="iconfont icon-close" style="font-size: 20px; color: #fff;"></text>
```
### 批量替换工具
```bash
# 使用正则表达式批量替换
# 将 <u-icon name="logout" 替换为 <text class="iconfont icon-close"
find ./src -name "*.vue" -exec sed -i 's/<u-icon name="logout"/<text class="iconfont icon-close"/g' {} \;
```
## 🚀 性能优化
### 1. 按需加载
```javascript
// 动态导入图标CSS(大型应用)
const loadIconFont = async () => {
if (!document.querySelector('#iconfont-css')) {
const link = document.createElement('link');
link.id = 'iconfont-css';
link.rel = 'stylesheet';
link.href = './static/fonts/iconfont.css';
document.head.appendChild(link);
}
};
```
### 2. CDN 优化
```css
/* 使用CDN加载字体文件 */
@font-face {
font-family: 'iconfont';
src: url('https://cdn.example.com/fonts/iconfont.woff') format('woff');
}
```
## 🛠️ 开发工具
### VS Code 插件推荐
- **SVG Viewer** - 预览SVG文件
- **CSS Peek** - 快速查看CSS定义
- **IconFont Helper** - iconfont图标提示
### 图标搜索工具
- [Iconify](https://iconify.design/) - 100,000+ 开源图标
- [Feather Icons](https://feathericons.com/) - 简洁线性图标
- [Heroicons](https://heroicons.com/) - Tailwind CSS图标
## ❓ 常见问题
### Q: 图标不显示怎么办?
A: 检查以下几点:
1. CSS文件是否正确引入
2. 类名是否拼写正确
3. 字体文件路径是否正确
4. 浏览器是否支持data URI
### Q: 如何修改图标颜色?
A: 使用 `color` 或 `fill` 属性:
```css
.my-icon {
color: #1890ff; /* 对于SVG data URI */
fill: #1890ff; /* 对于字体图标 */
}
```
### Q: 图标模糊怎么解决?
A: 确保图标尺寸为偶数像素:
```css
.icon-clear {
width: 24px; /* ✅ 偶数 */
height: 24px; /* ✅ 偶数 */
}
```
## 📞 技术支持
- **项目位置**: `mobile/src/static/fonts/`
- **演示页面**: `/pages/iconfont-demo/index`
- **测试页面**: `/pages/uview-icon-test/index`
- **文档更新**: 2025-01-07
---
**✨ 总结**: iconfont 图标系统让您轻松管理图标,添加新图标只需要复制粘贴几行CSS代码!推荐使用 SVG data URI 方式,兼容性最好,性能最优。