You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

3.6 KiB

首页流体画布设计

概述

首页定位为纯粹的视觉体验,不承载信息。全屏 WebGL 流体画布,鼠标/触摸交互产生扰动,中央展示 "Dash" 品牌文字。首屏即全部,无下方内容区。

布局

┌──────────────────────────────────────────┐
│                                          │
│          Nav (透明浮层,固定顶部)          │
│                                          │
│              ┌─────────────┐             │
│              │   流体画布    │             │
│              │  (全屏 Canvas) │             │
│              │             │             │
│              │    Dash     │             │
│              │  (中央文字)   │             │
│              │             │             │
│              └─────────────┘             │
│                                          │
└──────────────────────────────────────────┘
  • Canvas 铺满整个视口 (100vw × 100vh),位于所有内容之下 (z-index: 0)
  • 中央文字固定居中,z-index 高于 Canvas
  • 无滚动内容,无 footer(首页专属)

流体画布

色彩

  • 底色:cream #faf9f5,占画布大部分面积
  • 主流动层:coral #cc785c,混入少量 amber #e8a55a
  • 点缀暗部:dark navy #181715,偶尔出现如墨滴
  • 所有颜色 smooth blending,无硬边界

交互

  • 鼠标移动 → 光标周围流体扰动,模拟手指划过水面
  • 扰动强度正比于鼠标速度:快速 = 大波纹,缓慢 = 细微涟漪
  • 鼠标静止 → 流体缓慢自主流动,不完全静止
  • 触摸设备 → 触摸点产生扰动

中央文字

  • 内容:"Dash"
  • 字体:Liu Jian Mao Cao(草书),字号约 120-160px
  • 颜色:cream #faf9f5
  • 位置:居中固定,始终在 Canvas 之上

技术方案

  • WebGL + Three.js + custom fragment shader 实现流体模拟
  • Canvas 分辨率适配 devicePixelRatio
  • 移动端降级为简化粒子系统(~200 粒子),触摸滑动产生扰动
  • 加载态:纯 cream 背景 + coral 色呼吸动画点,Canvas 就绪后淡入

导航栏 (TopNav)

首页行为

  • 背景透明,去掉 border-bottom
  • 文字颜色使用 on-dark 风格(cream 偏白),确保在流体背景上可读
  • Logo 保持 Liu Jian Mao Cao 字体
  • 离开首页(导航到其他页面)恢复正常 cream 底 + hairline border

实现方式

  • 通过 route 判断是否在首页 (route.path === '/')
  • 首页:添加 transparent modifier class
  • 非首页:默认样式

响应式

断点 行为
桌面 (>1024px) 全 WebGL 流体,120-160px 字号
平板 (768-1024px) WebGL 流体,100-120px 字号
移动 (<768px) 粒子系统降级,80-100px 字号

组件分解

1. FluidCanvas.vue

WebGL Canvas 组件,负责:

  • Three.js 场景初始化与销毁
  • Shader uniform 更新(鼠标位置、时间)
  • 窗口 resize 适配
  • 移动端检测与降级切换

2. HomeHero.vue

首页内容层,负责:

  • 居中 "Dash" 文字
  • 文字淡入动画(Canvas 就绪后触发)

3. TopNav 改动

  • 新增 transparent prop 或 composable 判断首页
  • 首页样式覆盖:透明背景、无边框、文字颜色调整为 on-dark

不在范围内

  • 首页下方内容区域(明确不需要)
  • 向下滚动提示(明确不需要)
  • 音效
  • 流体录制/截图功能