Skip to content

Commit 0180e48

Browse files
sunnylqmclaude
andcommitted
feat(home): 极速下载卡中国点阵图 + CTA aurora + HarmonyOS 徽章
- 新增 ChinaDotMap:国界 GeoJSON 1.25° 网格采样为单条 SVG path (514 点,含台湾/海南补点与南海诸岛右下虚线框簇),8 个主要 CDN 节点城市错峰呼吸脉冲,填充「极速下载」卡片留白 - CTA 卡片背景叠加弱化 aurora,与 hero 视觉呼应 - hero 徽章行改为双胶囊,新增「HarmonyOS 已支持」(真实占比已 4%) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0112yBeEEYT8tyywNbypwXkN
1 parent 72921c6 commit 0180e48

6 files changed

Lines changed: 117 additions & 14 deletions

File tree

home-visual-plan-2026-07-05.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ transition 滚动到目标数字;列 key 从个位向高位编号,保证低
3535
- [x] `LiveStats.tsx` 内实现 `RollingNumber` 组件替换纯文本
3636
- [x] home.scss 增加 odometer 样式 + reduced-motion 分支
3737

38-
## 4. ⏸(备选)「极速下载」卡片补中国点阵地图 + CDN 节点脉冲
38+
## 4. 「极速下载」卡片补中国点阵地图 + CDN 节点脉冲
3939

4040
点阵 SVG 中国轮廓 + 主要城市呼吸光点,为后续地理热力图做铺垫。
4141
等第 2 步地理数据方案启动时一起做。
4242

43-
## 5. ⏸(备选)CTA 卡片背景复用弱化 aurora + hero 加「HarmonyOS 已支持」
43+
## 5. CTA 卡片背景复用弱化 aurora + hero 加「HarmonyOS 已支持」
4444

4545
顺手项,本轮时间富余则做。
4646

@@ -58,3 +58,8 @@ transition 滚动到目标数字;列 key 从个位向高位编号,保证低
5858
- 2026-07-05 任务 1–3 前端完成并验证:mock 页曲线 + 滚轮 + 光斑正常,
5959
计数器 3 秒内 8,412,855 → 8,413,196 平滑滚动;真实页优雅降级。
6060
待办:部署 pushy-server(3e5c715)/ cresc-server(416c225)后曲线自动出现。
61+
- 2026-07-05 服务端已部署,真实页曲线上线(hourly 23 项)。
62+
- 2026-07-05 备选 4、5 完成:ChinaDotMap 组件(国界 GeoJSON 网格采样
63+
514 点 + 台湾/海南补点 + 南海诸岛右下角虚线框簇,8 个 CDN 节点错峰
64+
脉冲,reduced-motion 关闭);CTA 卡片叠加 50% 透明 aurora;hero 徽章
65+
行改为双胶囊,新增「HarmonyOS 已支持」。构建与截图验证通过。

site/components/home/Banner.tsx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,24 @@ function Banner(_props: BannerProps) {
7474
<div className="grid lg:grid-cols-[1.05fr_0.95fr] items-center gap-16 lg:gap-10 pt-24 pb-24 lg:pt-32 lg:pb-32">
7575
{/* ---- Left: copy ---- */}
7676
<div className="max-w-2xl">
77-
<a
78-
href="/docs/skills"
79-
data-reveal
80-
className="group inline-flex items-center gap-2.5 rounded-full border border-white/10 bg-white/[0.04] backdrop-blur px-4 py-1.5 text-sm text-slate-300 hover:border-blue-400/40 hover:text-white transition-colors duration-300 mb-10"
81-
>
82-
<span className="relative flex w-2 h-2">
83-
<span className="pushy-live-dot absolute inline-flex h-full w-full rounded-full bg-emerald-400" />
84-
</span>
85-
官方 Skill 已上线 · AI 一句话完成接入
86-
<span className="text-blue-400 group-hover:translate-x-0.5 transition-transform duration-300">
87-
77+
<div data-reveal className="flex flex-wrap items-center gap-3 mb-10">
78+
<a
79+
href="/docs/skills"
80+
className="group inline-flex items-center gap-2.5 rounded-full border border-white/10 bg-white/[0.04] backdrop-blur px-4 py-1.5 text-sm text-slate-300 hover:border-blue-400/40 hover:text-white transition-colors duration-300"
81+
>
82+
<span className="relative flex w-2 h-2">
83+
<span className="pushy-live-dot absolute inline-flex h-full w-full rounded-full bg-emerald-400" />
84+
</span>
85+
官方 Skill 已上线 · AI 一句话完成接入
86+
<span className="text-blue-400 group-hover:translate-x-0.5 transition-transform duration-300">
87+
88+
</span>
89+
</a>
90+
<span className="inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/[0.04] backdrop-blur px-4 py-1.5 text-sm text-slate-300">
91+
<span className="w-2 h-2 rounded-full bg-violet-400" />
92+
HarmonyOS 已支持
8893
</span>
89-
</a>
94+
</div>
9095

9196
<h1
9297
data-reveal
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// Decorative dot-matrix map of China with pulsing CDN node markers.
2+
// DOTS_PATH is pre-generated: a ~1.25° grid sampled inside the national
3+
// boundary (geo.datav.aliyun.com areas_v3/bound/100000.json), equirectangular
4+
// projection corrected by cos(35°), plus reinforcement dots for Taiwan /
5+
// Hainan and a bottom-right inset cluster for the South China Sea islands.
6+
// Each dot is an `M x y h0` segment drawn with round line caps.
7+
const DOTS_PATH = "M2.5 28.9h0M4.9 26.5h0M4.9 28.9h0M4.9 31.4h0M4.9 33.9h0M7.4 26.5h0M7.4 28.9h0M7.4 31.4h0M7.4 33.9h0M9.8 24.0h0M9.8 26.5h0M9.8 28.9h0M9.8 31.4h0M9.8 33.9h0M9.8 36.3h0M9.8 38.8h0M9.8 43.7h0M12.3 19.1h0M12.3 21.6h0M12.3 24.0h0M12.3 26.5h0M12.3 28.9h0M12.3 31.4h0M12.3 33.9h0M12.3 36.3h0M12.3 38.8h0M12.3 41.2h0M12.3 43.7h0M14.7 19.1h0M14.7 21.6h0M14.7 24.0h0M14.7 26.5h0M14.7 28.9h0M14.7 31.4h0M14.7 33.9h0M14.7 36.3h0M14.7 38.8h0M14.7 41.2h0M14.7 43.7h0M14.7 46.1h0M17.2 14.2h0M17.2 16.7h0M17.2 19.1h0M17.2 21.6h0M17.2 24.0h0M17.2 26.5h0M17.2 28.9h0M17.2 31.4h0M17.2 33.9h0M17.2 36.3h0M17.2 38.8h0M17.2 41.2h0M17.2 43.7h0M17.2 46.1h0M19.6 14.2h0M19.6 16.7h0M19.6 19.1h0M19.6 21.6h0M19.6 24.0h0M19.6 26.5h0M19.6 28.9h0M19.6 31.4h0M19.6 33.9h0M19.6 36.3h0M19.6 38.8h0M19.6 41.2h0M19.6 43.7h0M19.6 46.1h0M19.6 48.6h0M22.1 11.8h0M22.1 14.2h0M22.1 16.7h0M22.1 19.1h0M22.1 21.6h0M22.1 24.0h0M22.1 26.5h0M22.1 28.9h0M22.1 31.4h0M22.1 33.9h0M22.1 36.3h0M22.1 38.8h0M22.1 41.2h0M22.1 43.7h0M22.1 46.1h0M22.1 48.6h0M24.5 11.8h0M24.5 14.2h0M24.5 16.7h0M24.5 19.1h0M24.5 21.6h0M24.5 24.0h0M24.5 26.5h0M24.5 28.9h0M24.5 31.4h0M24.5 33.9h0M24.5 36.3h0M24.5 38.8h0M24.5 41.2h0M24.5 43.7h0M24.5 46.1h0M24.5 48.6h0M27.0 11.8h0M27.0 14.2h0M27.0 16.7h0M27.0 19.1h0M27.0 21.6h0M27.0 24.0h0M27.0 26.5h0M27.0 28.9h0M27.0 31.4h0M27.0 33.9h0M27.0 36.3h0M27.0 38.8h0M27.0 41.2h0M27.0 43.7h0M27.0 46.1h0M27.0 48.6h0M29.4 19.1h0M29.4 21.6h0M29.4 24.0h0M29.4 26.5h0M29.4 28.9h0M29.4 31.4h0M29.4 33.9h0M29.4 36.3h0M29.4 38.8h0M29.4 41.2h0M29.4 43.7h0M29.4 46.1h0M29.4 48.6h0M31.9 19.1h0M31.9 21.6h0M31.9 24.0h0M31.9 26.5h0M31.9 28.9h0M31.9 31.4h0M31.9 33.9h0M31.9 36.3h0M31.9 38.8h0M31.9 41.2h0M31.9 43.7h0M31.9 46.1h0M31.9 48.6h0M31.9 51.0h0M34.3 19.1h0M34.3 21.6h0M34.3 24.0h0M34.3 26.5h0M34.3 28.9h0M34.3 31.4h0M34.3 33.9h0M34.3 36.3h0M34.3 38.8h0M34.3 41.2h0M34.3 43.7h0M34.3 46.1h0M34.3 48.6h0M34.3 51.0h0M36.8 21.6h0M36.8 24.0h0M36.8 26.5h0M36.8 28.9h0M36.8 31.4h0M36.8 33.9h0M36.8 36.3h0M36.8 38.8h0M36.8 41.2h0M36.8 43.7h0M36.8 46.1h0M36.8 48.6h0M39.3 24.0h0M39.3 26.5h0M39.3 28.9h0M39.3 31.4h0M39.3 33.9h0M39.3 36.3h0M39.3 38.8h0M39.3 41.2h0M39.3 43.7h0M39.3 46.1h0M39.3 48.6h0M41.7 24.0h0M41.7 26.5h0M41.7 28.9h0M41.7 31.4h0M41.7 33.9h0M41.7 36.3h0M41.7 38.8h0M41.7 41.2h0M41.7 43.7h0M41.7 46.1h0M41.7 48.6h0M41.7 51.0h0M41.7 53.5h0M41.7 55.9h0M41.7 58.4h0M44.2 24.0h0M44.2 26.5h0M44.2 28.9h0M44.2 31.4h0M44.2 33.9h0M44.2 36.3h0M44.2 38.8h0M44.2 41.2h0M44.2 43.7h0M44.2 46.1h0M44.2 48.6h0M44.2 51.0h0M44.2 53.5h0M44.2 55.9h0M44.2 58.4h0M44.2 60.8h0M44.2 63.3h0M46.6 24.0h0M46.6 26.5h0M46.6 28.9h0M46.6 31.4h0M46.6 33.9h0M46.6 36.3h0M46.6 38.8h0M46.6 41.2h0M46.6 43.7h0M46.6 46.1h0M46.6 48.6h0M46.6 51.0h0M46.6 53.5h0M46.6 55.9h0M46.6 58.4h0M46.6 60.8h0M49.1 24.0h0M49.1 26.5h0M49.1 28.9h0M49.1 31.4h0M49.1 33.9h0M49.1 36.3h0M49.1 38.8h0M49.1 41.2h0M49.1 43.7h0M49.1 46.1h0M49.1 48.6h0M49.1 51.0h0M49.1 53.5h0M49.1 55.9h0M49.1 58.4h0M49.1 60.8h0M51.5 24.0h0M51.5 26.5h0M51.5 28.9h0M51.5 31.4h0M51.5 33.9h0M51.5 36.3h0M51.5 38.8h0M51.5 41.2h0M51.5 43.7h0M51.5 46.1h0M51.5 48.6h0M51.5 51.0h0M51.5 53.5h0M51.5 55.9h0M51.5 58.4h0M54.0 24.0h0M54.0 26.5h0M54.0 28.9h0M54.0 31.4h0M54.0 33.9h0M54.0 36.3h0M54.0 38.8h0M54.0 41.2h0M54.0 43.7h0M54.0 46.1h0M54.0 48.6h0M54.0 51.0h0M54.0 53.5h0M54.0 55.9h0M54.0 58.4h0M56.4 24.0h0M56.4 26.5h0M56.4 28.9h0M56.4 31.4h0M56.4 33.9h0M56.4 36.3h0M56.4 38.8h0M56.4 41.2h0M56.4 43.7h0M56.4 46.1h0M56.4 48.6h0M56.4 51.0h0M56.4 53.5h0M56.4 55.9h0M56.4 58.4h0M56.4 60.8h0M56.4 63.3h0M58.2 68.7h0M58.9 24.0h0M58.9 26.5h0M58.9 28.9h0M58.9 31.4h0M58.9 33.9h0M58.9 36.3h0M58.9 38.8h0M58.9 41.2h0M58.9 43.7h0M58.9 46.1h0M58.9 48.6h0M58.9 51.0h0M58.9 53.5h0M58.9 55.9h0M58.9 58.4h0M58.9 60.8h0M58.9 63.3h0M58.9 68.2h0M59.0 67.5h0M60.0 66.7h0M61.3 21.6h0M61.3 24.0h0M61.3 26.5h0M61.3 28.9h0M61.3 31.4h0M61.3 33.9h0M61.3 36.3h0M61.3 38.8h0M61.3 41.2h0M61.3 43.7h0M61.3 46.1h0M61.3 48.6h0M61.3 51.0h0M61.3 53.5h0M61.3 55.9h0M61.3 58.4h0M61.3 60.8h0M61.3 63.3h0M63.8 19.1h0M63.8 21.6h0M63.8 24.0h0M63.8 26.5h0M63.8 28.9h0M63.8 31.4h0M63.8 33.9h0M63.8 36.3h0M63.8 38.8h0M63.8 41.2h0M63.8 43.7h0M63.8 46.1h0M63.8 48.6h0M63.8 51.0h0M63.8 53.5h0M63.8 55.9h0M63.8 58.4h0M63.8 60.8h0M66.2 19.1h0M66.2 21.6h0M66.2 24.0h0M66.2 26.5h0M66.2 28.9h0M66.2 31.4h0M66.2 33.9h0M66.2 36.3h0M66.2 38.8h0M66.2 41.2h0M66.2 43.7h0M66.2 46.1h0M66.2 48.6h0M66.2 51.0h0M66.2 53.5h0M66.2 55.9h0M66.2 58.4h0M66.2 60.8h0M68.7 16.7h0M68.7 19.1h0M68.7 21.6h0M68.7 24.0h0M68.7 26.5h0M68.7 28.9h0M68.7 31.4h0M68.7 33.9h0M68.7 36.3h0M68.7 38.8h0M68.7 41.2h0M68.7 43.7h0M68.7 46.1h0M68.7 48.6h0M68.7 51.0h0M68.7 53.5h0M68.7 55.9h0M68.7 58.4h0M71.1 9.3h0M71.1 11.8h0M71.1 16.7h0M71.1 19.1h0M71.1 21.6h0M71.1 24.0h0M71.1 26.5h0M71.1 28.9h0M71.1 31.4h0M71.1 33.9h0M71.1 36.3h0M71.1 38.8h0M71.1 41.2h0M71.1 43.7h0M71.1 46.1h0M71.1 48.6h0M71.1 51.0h0M71.1 53.5h0M71.1 55.9h0M71.1 58.4h0M73.6 9.3h0M73.6 11.8h0M73.6 14.2h0M73.6 16.7h0M73.6 19.1h0M73.6 21.6h0M73.6 24.0h0M73.6 26.5h0M73.6 31.4h0M73.6 33.9h0M73.6 36.3h0M73.6 38.8h0M73.6 41.2h0M73.6 43.7h0M73.6 46.1h0M73.6 48.6h0M73.6 51.0h0M73.6 53.5h0M73.6 55.9h0M76.1 2.0h0M76.1 4.4h0M76.1 6.9h0M76.1 9.3h0M76.1 11.8h0M76.1 14.2h0M76.1 16.7h0M76.1 19.1h0M76.1 21.6h0M76.1 24.0h0M76.1 26.5h0M76.1 33.9h0M76.1 38.8h0M76.1 41.2h0M76.1 43.7h0M76.1 46.1h0M76.1 48.6h0M76.1 51.0h0M76.1 60.8h0M76.5 59.7h0M77.2 57.3h0M78.0 56.5h0M78.5 2.0h0M78.5 4.4h0M78.5 6.9h0M78.5 9.3h0M78.5 11.8h0M78.5 14.2h0M78.5 16.7h0M78.5 19.1h0M78.5 21.6h0M78.5 24.0h0M78.5 28.9h0M78.5 43.7h0M81.0 2.0h0M81.0 4.4h0M81.0 6.9h0M81.0 9.3h0M81.0 11.8h0M81.0 14.2h0M81.0 16.7h0M81.0 19.1h0M81.0 21.6h0M81.0 24.0h0M81.0 26.5h0M83.4 2.0h0M83.4 4.4h0M83.4 6.9h0M83.4 9.3h0M83.4 11.8h0M83.4 14.2h0M83.4 16.7h0M83.4 19.1h0M83.4 21.6h0M83.4 24.0h0M85.9 4.4h0M85.9 6.9h0M85.9 9.3h0M85.9 11.8h0M85.9 14.2h0M85.9 16.7h0M85.9 19.1h0M85.9 21.6h0M85.9 24.0h0M88.0 56.0h0M88.3 9.3h0M88.3 11.8h0M88.3 14.2h0M88.3 16.7h0M88.3 19.1h0M88.3 21.6h0M88.3 24.0h0M89.5 63.0h0M90.0 59.0h0M90.8 9.3h0M90.8 11.8h0M90.8 14.2h0M90.8 16.7h0M90.8 19.1h0M90.8 21.6h0M91.5 66.5h0M92.0 62.0h0M93.2 14.2h0M93.2 16.7h0M93.2 19.1h0M93.5 65.0h0M94.5 68.0h0M95.7 14.2h0M95.7 16.7h0M98.1 11.8h0";
8+
9+
const VIEW_W = 100;
10+
const VIEW_H = 70.7;
11+
12+
// Major Aliyun CDN regions, projected with the same transform as DOTS_PATH.
13+
const NODES = [
14+
{ name: "北京", x: 69.8, y: 27.3, delay: "0s" },
15+
{ name: "上海", x: 77.9, y: 44.3, delay: "0.4s" },
16+
{ name: "广州", x: 64.7, y: 60.2, delay: "0.8s" },
17+
{ name: "成都", x: 50.0, y: 45.4, delay: "1.2s" },
18+
{ name: "武汉", x: 66.4, y: 45.6, delay: "1.6s" },
19+
{ name: "西安", x: 57.8, y: 38.2, delay: "2.0s" },
20+
{ name: "沈阳", x: 81.1, y: 23.6, delay: "2.4s" },
21+
{ name: "乌鲁木齐", x: 23.5, y: 19.6, delay: "2.8s" },
22+
];
23+
24+
function ChinaDotMap() {
25+
return (
26+
<div className="relative mt-8 select-none" aria-hidden="true">
27+
<svg viewBox={`0 0 ${VIEW_W} ${VIEW_H}`} className="block w-full">
28+
<path
29+
d={DOTS_PATH}
30+
stroke="rgba(148, 163, 184, 0.26)"
31+
strokeWidth="1.15"
32+
strokeLinecap="round"
33+
fill="none"
34+
/>
35+
{/* South China Sea islands inset frame */}
36+
<rect
37+
x="85"
38+
y="53"
39+
width="12.5"
40+
height="16.5"
41+
rx="1.5"
42+
fill="none"
43+
stroke="rgba(148, 163, 184, 0.16)"
44+
strokeWidth="0.35"
45+
strokeDasharray="1.6 1.2"
46+
/>
47+
</svg>
48+
{NODES.map((node) => (
49+
<span
50+
key={node.name}
51+
className="pushy-cdn-node"
52+
style={{
53+
left: `${node.x}%`,
54+
top: `${(node.y / VIEW_H) * 100}%`,
55+
animationDelay: node.delay,
56+
}}
57+
/>
58+
))}
59+
</div>
60+
);
61+
}
62+
63+
export default ChinaDotMap;

site/components/home/CtaBand.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ function CtaBand() {
1111
className="absolute inset-0 bg-[radial-gradient(ellipse_100%_120%_at_50%_120%,rgba(79,70,229,0.35),rgba(10,17,32,0.4)_55%,transparent)]"
1212
aria-hidden="true"
1313
/>
14+
<div className="pushy-aurora opacity-50" aria-hidden="true">
15+
<div className="pushy-aurora__cyan" />
16+
</div>
1417
<div className="pushy-noise-layer" aria-hidden="true" />
1518
<div
1619
className="absolute inset-x-16 top-0 h-px bg-gradient-to-r from-transparent via-blue-400/50 to-transparent"

site/components/home/Page1.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {
33
MouseEvent as ReactMouseEvent,
44
ReactNode,
55
} from "react";
6+
import ChinaDotMap from "./ChinaDotMap";
67

78
interface FeatureIconProps {
89
children: ReactNode;
@@ -149,6 +150,7 @@ function Page1() {
149150
<p className="mt-3 text-[15px] leading-relaxed text-slate-400">
150151
阿里云高速 CDN 全网分发,全国各地客户端秒级拉取,弱网环境也稳定可达。
151152
</p>
153+
<ChinaDotMap />
152154
</div>
153155
</div>
154156

site/components/home/home.scss

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,30 @@ body:has(.home-wrapper) {
383383
opacity: 1;
384384
}
385385

386+
/* ---------- CDN node pulses (ChinaDotMap) ---------- */
387+
388+
.pushy-cdn-node {
389+
position: absolute;
390+
width: 5px;
391+
height: 5px;
392+
margin: -2.5px 0 0 -2.5px;
393+
border-radius: 9999px;
394+
background: #38bdf8;
395+
animation: pushy-node-pulse 3s ease-in-out infinite;
396+
}
397+
398+
@keyframes pushy-node-pulse {
399+
0%,
400+
100% {
401+
opacity: 0.55;
402+
box-shadow: 0 0 0 0 rgba(56, 189, 248, 0.45);
403+
}
404+
50% {
405+
opacity: 1;
406+
box-shadow: 0 0 0 5px rgba(56, 189, 248, 0);
407+
}
408+
}
409+
386410
/* ---------- Odometer (rolling digits) ---------- */
387411

388412
.pushy-odometer {
@@ -523,6 +547,7 @@ body:has(.home-wrapper) {
523547
.pushy-progress::after,
524548
.pushy-float,
525549
.pushy-live-dot,
550+
.pushy-cdn-node,
526551
.pushy-marquee__track,
527552
.pushy-caret,
528553
.pushy-diff-bar,

0 commit comments

Comments
 (0)