# 翻牌特效架构设计 (DESIGN) ## 整体架构 项目采用单页应用架构,通过 React 状态驱动 UI 更新和动效触发。 ```mermaid graph TD App[App Component] --> GameState[Game State: revealedCards, selectedId] App --> StarLayer[StarryBackground Component] App --> Grid[CardGrid Component] Grid --> Card[FlipCard Component] Card --> CardUI[Front: Avatar/Info | Back: ProductImg] App --> Modal[ProductModal Component] ``` ## 核心组件设计 ### 1. FlipCard (翻牌组件) - **Props**: `id`, `user`, `product`, `isRevealed`, `onFlip`. - **CSS**: - `.card-inner`: `transition: transform 0.6s; transform-style: preserve-3d;` - `.card-front`, `.card-back`: `backface-visibility: hidden;` ### 2. StarryBackground (星空背景) - 实现多层叠加背景: - 底层:深蓝色渐变 `#0a0b1e` -> `#161b33`。 - 中层:静态微小星星(CSS 粒状纹理)。 - 高层:关键帧动画模拟的闪烁星星(不同大小、延时)。 ### 3. ProductModal (展示遮罩) - 当 `selectedId` 存在时显示。 - **Style**: `fixed inset-0`, `backdrop-filter: blur(8px)`, `bg-black/40`。 - **Animation**: 放大缩放并带有一圈光晕特效。 ## 实现细节:粒子特效 当翻牌触发时,在卡片位置生成一组临时的粒子元素: - 随机方向发射。 - 逐渐变小并透明。 - 使用 React `useState` 管理粒子生命周期。 ## 目录结构 (douyin_game) ```text src/ components/ CardGrid.tsx FlipCard.tsx StarryBackground.tsx ProductModal.tsx assets/ images/ App.tsx index.css ```