cosmo/LOGIN_REDESIGN.md

4.8 KiB
Raw Blame History

登录界面统一风格改造

日期: 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          │         │
│   │  宇宙星空可视化   │         │
│   │  [深色输入框]    │         │
│   │  [深色输入框]    │         │
│   │  [蓝色按钮]      │         │
│   └─────────────────┘         │
│                               │
│      [返回首页]               │
└───────────────────────────────┘

技术细节

样式统一

  1. 背景: 黑色星空 + 星云(与首页 Scene 组件一致)
  2. 卡片: 毛玻璃效果(backdrop-blur-md
  3. 颜色: 深色主题,白色/灰色文字
  4. 输入框: 深色背景,半透明边框
  5. 按钮: 蓝色主题(bg-blue-600

组件复用

  • SpaceBackground 可用于其他需要星空背景的页面
  • LoginCard 可用于弹窗登录、注册等场景

响应式设计

  • 使用 max-w-md 限制卡片最大宽度
  • 使用 p-4 在小屏幕上提供内边距
  • 卡片在各种屏幕尺寸下居中显示

测试清单

  • 登录页面背景显示星空和星云
  • 登录卡片使用毛玻璃效果
  • 输入框和按钮样式正确
  • 登录功能正常工作
  • "返回首页"链接正常工作
  • 响应式布局正常

后续优化建议

  1. 动画效果: 为登录卡片添加淡入动画
  2. 星空互动: 鼠标移动时星空微微偏移(视差效果)
  3. 主题切换: 支持亮色/暗色主题切换
  4. 多语言: 支持中英文切换

相关文件

新增文件

  • frontend/src/components/SpaceBackground.tsx
  • frontend/src/components/LoginCard.tsx

修改文件

  • frontend/src/pages/Login.tsx

依赖组件

  • frontend/src/components/Nebulae.tsx (已存在)
  • @react-three/fiber (已安装)
  • @react-three/drei (已安装)

完成状态: 所有改造已完成并测试通过