From 747405dc963c65359ebb9f6104f19956e356a422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E7=BF=94?= Date: Mon, 4 May 2026 00:00:19 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4hero=E6=B0=B4?= =?UTF-8?q?=E5=A2=A8=E5=8A=A8=E7=94=BB=EF=BC=8C=E4=BC=98=E5=8C=96=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E6=A0=B7=E5=BC=8F=E4=B8=8E=E7=BB=84=E4=BB=B6=E7=BB=86?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../39838-1777791603/.server-stopped | 1 + .../39838-1777791603/animation-style.html | 52 ++ .../hero-animation-demos.html | 332 ++++++++ .../39838-1777791603/hero-ink-demos.html | 447 ++++++++++ .../39838-1777791603/hero-refined-demos.html | 779 ++++++++++++++++++ ...26-05-03-particle-visual-upgrade-design.md | 55 ++ public/apple-touch-icon.png | Bin 0 -> 10809 bytes public/favicon-16x16.png | Bin 0 -> 664 bytes public/favicon-32x32.png | Bin 0 -> 1418 bytes public/favicon.ico | Bin 0 -> 1440 bytes public/site.webmanifest | 26 + scripts/generate-favicons.js | 42 + src/app/globals.css | 6 +- src/app/layout.tsx | 7 +- src/components/layout/breadcrumb.tsx | 4 +- src/components/layout/page-nav.tsx | 10 +- src/components/sections/hero-section-v2.tsx | 7 - src/components/ui/back-to-top.tsx | 2 +- src/components/ui/flip-clock.tsx | 6 +- 19 files changed, 1757 insertions(+), 19 deletions(-) create mode 100644 .superpowers/brainstorm/39838-1777791603/.server-stopped create mode 100644 .superpowers/brainstorm/39838-1777791603/animation-style.html create mode 100644 .superpowers/brainstorm/39838-1777791603/hero-animation-demos.html create mode 100644 .superpowers/brainstorm/39838-1777791603/hero-ink-demos.html create mode 100644 .superpowers/brainstorm/39838-1777791603/hero-refined-demos.html create mode 100644 docs/superpowers/specs/2026-05-03-particle-visual-upgrade-design.md create mode 100644 public/apple-touch-icon.png create mode 100644 public/favicon-16x16.png create mode 100644 public/favicon-32x32.png create mode 100644 public/favicon.ico create mode 100644 public/site.webmanifest create mode 100644 scripts/generate-favicons.js diff --git a/.superpowers/brainstorm/39838-1777791603/.server-stopped b/.superpowers/brainstorm/39838-1777791603/.server-stopped new file mode 100644 index 0000000..96d1744 --- /dev/null +++ b/.superpowers/brainstorm/39838-1777791603/.server-stopped @@ -0,0 +1 @@ +{"reason":"idle timeout","timestamp":1777795204433} diff --git a/.superpowers/brainstorm/39838-1777791603/animation-style.html b/.superpowers/brainstorm/39838-1777791603/animation-style.html new file mode 100644 index 0000000..94ffd30 --- /dev/null +++ b/.superpowers/brainstorm/39838-1777791603/animation-style.html @@ -0,0 +1,52 @@ +

Hero 动画风格偏好

+

你希望 Hero 区域传达什么样的品牌气质?选择最接近你期望的方向

+ +
+
+
A
+
+

沉稳专业 — 微妙渐变 + 文字动效

+

暖白/浅灰渐变背景,文字依次淡入上浮,极简装饰元素(如细线圆圈)。类似 Atlassian、Stripe 的克制风格。强调品牌可信度与专业感。

+
+

优势

  • 加载快,性能开销极低
  • 适配所有设备
  • 与现有品牌色(朱砂红 #C41E3A)自然融合
+

注意

  • 视觉冲击力相对温和
  • 需要文字排版功底支撑
+
+
+
+ +
+
B
+
+

科技动感 — 流光渐变 + 粒子/网格

+

深色或渐变背景,数据粒子流动、科技网格线、光晕效果。强调数字化转型与科技实力。类似 Vercel、Linear 的科技美学。

+
+

优势

  • 视觉冲击力强
  • 与"数字化转型"定位高度契合
  • 项目已有 DataParticleFlow、TechGridFlow 等组件
+

注意

  • 性能开销中等
  • 需要控制粒子数量避免喧宾夺主
+
+
+
+ +
+
C
+
+

东方韵味 — 水墨/印章 + 现代排版

+

融合中国传统元素(水墨晕染、印章动画)与现代极简排版。强调文化底蕴与创新融合。项目已有 InkBackground、SealAnimation 等组件。

+
+

优势

  • 品牌辨识度极高
  • 差异化明显,同行少有
  • 与 Novalon(诺华麟)品牌名呼应
+

注意

  • 设计难度高,容易"土味"
  • 需要精准控制水墨效果的克制度
+
+
+
+ +
+
D
+
+

融合创新 — 克制科技 + 品牌印记

+

以方案 A 的沉稳为底色,融入方案 B 的微妙科技光效(如渐变光晕),点缀方案 C 的品牌印章元素。三者取精华,克制融合。

+
+

优势

  • 兼顾专业感、科技感、品牌辨识度
  • 层次丰富但不杂乱
  • 与之前的设计方向(品牌融合重构)一致
+

注意

  • 实现复杂度最高
  • 需要精心调校各元素的视觉权重
+
+
+
+
diff --git a/.superpowers/brainstorm/39838-1777791603/hero-animation-demos.html b/.superpowers/brainstorm/39838-1777791603/hero-animation-demos.html new file mode 100644 index 0000000..dfd1ffe --- /dev/null +++ b/.superpowers/brainstorm/39838-1777791603/hero-animation-demos.html @@ -0,0 +1,332 @@ + + + + + +Hero 动画风格 Demo + + + + + + + +
+
+
+
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ + +
+
+
+
+
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ + +
+
+
+
+
+
+
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ + +
+
+
+
+
+
+ + + + +
+
+
+
+
+
+
+
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ +
当前:A 沉稳专业 — 微妙渐变 + 文字动效
+ + + + + diff --git a/.superpowers/brainstorm/39838-1777791603/hero-ink-demos.html b/.superpowers/brainstorm/39838-1777791603/hero-ink-demos.html new file mode 100644 index 0000000..fab6a97 --- /dev/null +++ b/.superpowers/brainstorm/39838-1777791603/hero-ink-demos.html @@ -0,0 +1,447 @@ + + + + + +东方韵味 Hero — 水墨扩散 Demo + + + + + + + + +
+
+ +
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ + +
+
+ +
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

企业数字化转型服务商

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ +
V1 宣纸水墨 — 传统宣纸底色 + 水墨扩散 + 印章
+ + + + + diff --git a/.superpowers/brainstorm/39838-1777791603/hero-refined-demos.html b/.superpowers/brainstorm/39838-1777791603/hero-refined-demos.html new file mode 100644 index 0000000..302d7da --- /dev/null +++ b/.superpowers/brainstorm/39838-1777791603/hero-refined-demos.html @@ -0,0 +1,779 @@ + + + + + +Hero 动画 — 精选方案 + + + + + + + + +
+ +
+
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

以智慧连接数字趋势,以伙伴身份陪您成长
——您的数字化转型同行者

+
+ + +
+
+
+ + +
+ +
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

以智慧连接数字趋势
以伙伴身份陪您成长

+
+ + +
+
+
+ + +
+ +
+
✦ 智连未来,成长伙伴
+

睿新致遠

+

以智慧连接数字趋势,以伙伴身份陪您成长——您的数字化转型同行者

+
+ + +
+
+
+ +
壹 · 墨韵流光 — 流动水墨 + 光晕 + 印章
+ + + + + diff --git a/docs/superpowers/specs/2026-05-03-particle-visual-upgrade-design.md b/docs/superpowers/specs/2026-05-03-particle-visual-upgrade-design.md new file mode 100644 index 0000000..8a2e7a9 --- /dev/null +++ b/docs/superpowers/specs/2026-05-03-particle-visual-upgrade-design.md @@ -0,0 +1,55 @@ +# 粒子束视觉升级与移动端适配设计 + +日期: 2026-05-03 +状态: 已批准 + +## 目标 + +提升 InkDataMorph 粒子动画的视觉美观度,并确保移动端展示体验。 + +## 核心改动 + +### 1. 多色调系统(5级水墨色调) + +| 色调 | 色值 | 用途 | 分配比例 | +|------|------|------|----------| +| 浓墨 | #1C1C1C | 核心墨点 | 15% | +| 淡墨 | #4A4A4A | 中间层次 | 25% | +| 浅墨 | #8C8C8C | 氛围渲染 | 30% | +| 朱砂 | #C41E3A | 点缀焦点 | 10% | +| 淡朱 | #E8707A | 淡雅扩散 | 20% | + +### 2. 粒子形态升级 + +- 椭圆粒子 + 随机旋转角度(ctx.ellipse 替代 ctx.arc) +- 浓墨粒子:纵横比 0.8-1.0(近圆) +- 淡墨/浅墨粒子:纵横比 0.5-0.9(椭圆) +- 墨迹飞溅:10% 粒子为飞溅粒子(更快速度、更小半径、不参与 morphing) + +### 3. 响应式适配 + +| 参数 | 移动端 (<768px) | 平板 (768-1023px) | 桌面 (≥1024px) | +|------|-----------------|-------------------|----------------| +| 粒子数量 | 80 | 140 | 220 | +| 墨点起始 | 单墨点(右侧中上) | 双墨点(缩小间距) | 双墨点(当前) | +| 目标区域X | W*(0.55-0.9) | W*(0.5-0.9) | W*(0.5-0.9) | +| 目标区域Y | H*(0.1-0.5) | H*(0.12-0.6) | H*(0.12-0.65) | +| 连接距离 | 60px | 80px | 100px | +| 光晕缩放 | 0.5x | 0.75x | 1.0x | +| 渐变层数 | 2 | 2 | 3 | +| 拖尾效果 | 关闭 | 5帧 | 8帧 | +| 飞溅粒子 | 无 | 5% | 10% | + +### 4. 技术实现 + +- Particle 接口新增: rotation, scaleX, scaleY, isSplash, toneIndex +- 新增 InkTone 枚举和 TONES 常量数组 +- 新增 getResponsiveConfig(W) 函数根据屏幕宽度返回配置 +- resize 监听(debounced 300ms)重新初始化粒子系统 +- DPR 适配: Math.min(window.devicePixelRatio, 2) +- 移动端性能优化: 减少渐变层、关闭拖尾、减少粒子数 + +## 文件影响 + +- src/components/effects/ink-data-morph.tsx — 主要改动文件 +- src/components/effects/ink-data-morph.test.tsx — 测试更新 diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5ae84c313bf6de277ba10ffc4c9677baaf9f9e GIT binary patch literal 10809 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 console.error(err)); diff --git a/src/app/globals.css b/src/app/globals.css index 2bdb055..34033ce 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1152,10 +1152,14 @@ body { } /* 优化移动端按钮和链接的触摸目标 */ - a, button { + a:not(nav[aria-label="breadcrumb"] a), button { min-height: 44px; min-width: 44px; } + nav[aria-label="breadcrumb"] a { + min-height: 0; + min-width: 0; + } /* 防止长文本溢出 */ p, li, span { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 95da4cf..61c1e18 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -124,7 +124,12 @@ export default function RootLayout({ - + + + + + + diff --git a/src/components/layout/breadcrumb.tsx b/src/components/layout/breadcrumb.tsx index 8e4522f..f682d55 100644 --- a/src/components/layout/breadcrumb.tsx +++ b/src/components/layout/breadcrumb.tsx @@ -14,7 +14,7 @@ interface BreadcrumbProps { export function Breadcrumb({ items }: BreadcrumbProps) { return ( -