@liuzhaolei/fui-icon
v2.0.0
Published
[](https://www.npmjs.com/package/fui-icon) [](https://www.npmjs.com/package/fui-icon) [
app.use(FuiIcon)
app.mount('#app')按需引入
<template>
<div>
<!-- RemixIcon 图标 -->
<FuiIcon icon="home" />
<!-- 自定义 SVG 图标 -->
<FuiIcon icon="custom-icon" :is-custom-svg="true" />
<!-- 外部图片图标 -->
<FuiIcon icon="https://example.com/icon.png" />
</div>
</template>
<script setup lang="ts">
import { FuiIcon } from 'fui-icon'
import 'fui-icon/dist/fui-icon.css'
</script>📚 API 文档
Props
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| icon | string | - | 必填 图标名称或 URL |
| isCustomSvg | boolean | false | 是否为自定义 SVG 图标 |
| className | string | '' | 自定义 CSS 类名 |
图标类型
1. RemixIcon 图标(默认)
<template>
<FuiIcon icon="home" />
<FuiIcon icon="user" />
<FuiIcon icon="settings" />
</template>2. 自定义 SVG 图标
<template>
<FuiIcon icon="my-custom-icon" :is-custom-svg="true" />
</template>3. 外部图片图标
<template>
<FuiIcon icon="https://example.com/icon.png" />
<FuiIcon icon="data:image/svg+xml;base64,..." />
</template>尺寸和样式
组件支持通过 CSS 变量自定义尺寸:
:root {
--el-font-size-big: 16px; /* 默认尺寸 */
}
/* 自定义尺寸 */
.custom-size {
--el-font-size-big: 24px;
}自定义样式
<template>
<FuiIcon
icon="home"
class-name="custom-icon"
style="color: #ff6b6b; font-size: 20px;"
/>
</template>
<style>
.custom-icon {
color: #4ecdc4;
transition: all 0.3s ease;
}
.custom-icon:hover {
transform: scale(1.2);
color: #45b7aa;
}
</style>🎨 图标示例
常用图标
<template>
<div class="icon-grid">
<FuiIcon icon="home" />
<FuiIcon icon="user" />
<FuiIcon icon="settings" />
<FuiIcon icon="search" />
<FuiIcon icon="heart" />
<FuiIcon icon="star" />
<FuiIcon icon="download" />
<FuiIcon icon="upload" />
<FuiIcon icon="edit" />
<FuiIcon icon="delete" />
</div>
</template>
<style>
.icon-grid {
display: grid;
grid-template-columns: repeat(5, 1fr);
gap: 16px;
padding: 20px;
}
.icon-grid .fui-icon {
font-size: 24px;
text-align: center;
padding: 16px;
border: 1px solid #e0e0e0;
border-radius: 8px;
transition: all 0.3s ease;
}
.icon-grid .fui-icon:hover {
background-color: #f5f5f5;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
</style>🔧 开发
本地开发
# 克隆项目
git clone <repository-url>
cd fui-icon
# 安装依赖
npm install
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
# 预览构建结果
npm run preview项目结构
fui-icon/
├── src/
│ ├── components/ # Vue 组件
│ │ └── FuiIcon.vue # 主图标组件
│ ├── styles/ # 样式文件
│ │ └── index.scss # 主样式文件
│ ├── types/ # TypeScript 类型定义
│ │ └── index.ts # 类型导出
│ └── index.ts # 主入口文件
├── dist/ # 构建输出目录
├── scripts/ # 构建脚本
└── package.json # 项目配置📋 浏览器支持
- Chrome >= 88
- Firefox >= 85
- Safari >= 14
- Edge >= 88
🤝 贡献
欢迎提交 Issue 和 Pull Request!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
📄 许可证
本项目基于 MIT 许可证开源。
🙏 致谢
- Vue.js - 渐进式 JavaScript 框架
- RemixIcon - 优秀的图标库
- TypeScript - JavaScript 的超集
📞 联系方式
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至:[email protected]
⭐ 如果这个项目对你有帮助,请给它一个星标!
