4.8 KiB
4.8 KiB
登录界面统一风格改造
日期: 2025-12-10 状态: ✅ 完成
改造目标
将登录界面与平台首页风格统一,使用相同的星空背景和组件化设计。
实施内容
1. 新增组件
SpaceBackground.tsx
路径: frontend/src/components/SpaceBackground.tsx
功能: 统一的星空背景组件,可复用于多个页面
特性:
- 程序生成的星星背景 (5000颗星)
- 可选的星云效果
- 可调节透明度
- 使用 React Three Fiber 渲染
Props:
interface SpaceBackgroundProps {
showNebulae?: boolean; // 是否显示星云(默认 true)
starCount?: number; // 星星数量(默认 5000)
opacity?: number; // 背景透明度(默认 1)
className?: string; // 额外的 CSS 类名
}
LoginCard.tsx
路径: frontend/src/components/LoginCard.tsx
功能: 组件化的登录卡片,使用毛玻璃效果
设计特点:
- 黑色半透明背景 (
bg-black/40) - 毛玻璃模糊效果 (
backdrop-blur-md) - 白色半透明边框 (
border-white/10) - 圆角卡片 (
rounded-2xl) - 深色输入框,与星空主题一致
Props:
interface LoginCardProps {
onLoginSuccess: (userData: any) => void; // 登录成功回调
className?: string; // 额外的 CSS 类名
}
2. 重构页面
Login.tsx
路径: frontend/src/pages/Login.tsx
改动前:
- 使用渐变背景 (
linear-gradient(135deg, #667eea 0%, #764ba2 100%)) - 使用 Ant Design Card 组件
- 白色背景卡片,与首页风格不一致
改动后:
- 使用
SpaceBackground组件(星空背景) - 使用
LoginCard组件(毛玻璃卡片) - 添加"返回首页"链接
- 完全组件化,易于维护和复用
视觉效果对比
改造前
┌───────────────────────────────┐
│ 紫色渐变背景 │
│ │
│ ┌─────────────────┐ │
│ │ 白色卡片 │ │
│ │ Cosmo 后台管理 │ │
│ │ [用户名] │ │
│ │ [密码] │ │
│ │ [登录按钮] │ │
│ └─────────────────┘ │
│ │
└───────────────────────────────┘
改造后
┌───────────────────────────────┐
│ ✨ 星空背景(星星 + 星云) │
│ │
│ ┌─────────────────┐ │
│ │ 半透明毛玻璃卡片 │ │
│ │ Cosmo │ │
│ │ 宇宙星空可视化 │ │
│ │ [深色输入框] │ │
│ │ [深色输入框] │ │
│ │ [蓝色按钮] │ │
│ └─────────────────┘ │
│ │
│ [返回首页] │
└───────────────────────────────┘
技术细节
样式统一
- 背景: 黑色星空 + 星云(与首页 Scene 组件一致)
- 卡片: 毛玻璃效果(
backdrop-blur-md) - 颜色: 深色主题,白色/灰色文字
- 输入框: 深色背景,半透明边框
- 按钮: 蓝色主题(
bg-blue-600)
组件复用
SpaceBackground可用于其他需要星空背景的页面LoginCard可用于弹窗登录、注册等场景
响应式设计
- 使用
max-w-md限制卡片最大宽度 - 使用
p-4在小屏幕上提供内边距 - 卡片在各种屏幕尺寸下居中显示
测试清单
- 登录页面背景显示星空和星云
- 登录卡片使用毛玻璃效果
- 输入框和按钮样式正确
- 登录功能正常工作
- "返回首页"链接正常工作
- 响应式布局正常
后续优化建议
- 动画效果: 为登录卡片添加淡入动画
- 星空互动: 鼠标移动时星空微微偏移(视差效果)
- 主题切换: 支持亮色/暗色主题切换
- 多语言: 支持中英文切换
相关文件
新增文件
frontend/src/components/SpaceBackground.tsxfrontend/src/components/LoginCard.tsx
修改文件
frontend/src/pages/Login.tsx
依赖组件
frontend/src/components/Nebulae.tsx(已存在)@react-three/fiber(已安装)@react-three/drei(已安装)
完成状态: ✅ 所有改造已完成并测试通过