# AvatarSetting 组件 这是一个根据Figma设计稿实现的头像设置模态框组件,支持头像预览、编辑、上传和删除功能。 ## 功能特性 - 🖼️ 大尺寸圆形头像预览 - ✂️ 头像裁剪功能 - 📤 文件上传支持 - 🗑️ 头像删除功能 - 📱 响应式设计 - 🎨 符合设计规范的UI - 🔄 模态框形式,覆盖在页面上 ## 使用方法 ```tsx import AvatarSetting from '@/app/(main)/profile/components/AvatarSetting' function ProfilePage() { const [isAvatarSettingOpen, setIsAvatarSettingOpen] = useState(false) const [currentAvatar, setCurrentAvatar] = useState('') const handleAvatarChange = (avatarUrl: string) => { setCurrentAvatar(avatarUrl) // 这里可以调用API保存头像 } const handleAvatarDelete = () => { setCurrentAvatar('') // 这里可以调用API删除头像 } const openAvatarSetting = () => { setIsAvatarSettingOpen(true) } const closeAvatarSetting = () => { setIsAvatarSettingOpen(false) } return (
{/* 触发按钮 */} {/* 头像设置模态框 */}
) } ``` ## Props | 属性 | 类型 | 默认值 | 说明 | | ---------------- | ----------------------------- | ----------- | ------------------- | | `isOpen` | `boolean` | `false` | 控制模态框显示/隐藏 | | `onClose` | `() => void` | `undefined` | 关闭模态框的回调 | | `currentAvatar` | `string \| undefined` | `undefined` | 当前头像URL | | `onAvatarChange` | `(avatarUrl: string) => void` | `undefined` | 头像变更回调 | | `onAvatarDelete` | `() => void` | `undefined` | 头像删除回调 | | `className` | `string` | `undefined` | 自定义CSS类名 | ## 层级关系 - 头像设置模态框:`z-40` - 头像裁剪弹窗:`z-50`(更高层级) ## 文件格式支持 - 支持的格式:JPG、JPEG、PNG - 文件大小限制:5MB - VIP用户支持GIF格式 ## 设计规范 - 背景色:`#211a2b` - 头像尺寸:512x512px - 按钮渐变:从 `#f264a4` 到 `#c241e6` - 圆角:999px(完全圆形) - 模态框尺寸:800x800px ## 测试页面 访问 `/test-avatar-setting` 可以查看组件的演示效果。 ## 注意事项 1. 组件现在是模态框形式,会覆盖在页面上 2. 使用现有的 `AvatarCropModal` 组件进行头像裁剪 3. 文件上传使用原生的 `input[type="file"]` 实现 4. 组件会自动验证文件类型和大小 5. 裁剪后的图片会自动转换为圆形 6. 裁剪弹窗的层级比头像设置模态框更高