From c4a0c50ed09962f3039a1ec812e45ae37def2162 Mon Sep 17 00:00:00 2001 From: Sakurasan <26715255+Sakurasan@users.noreply.github.com> Date: Tue, 11 Aug 2026 00:10:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A2=98=E6=9D=90=E5=B0=8F=E7=90=83?= =?UTF-8?q?=E6=AD=A3=E6=B6=A8=E5=B9=85=E8=93=9D=E5=AE=9E=E5=BF=83=E3=80=81?= =?UTF-8?q?=E8=B4=9F=E6=B6=A8=E5=B9=85=E8=93=9D=E7=A9=BA=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 负涨幅球改为仅描边空心(内部淡蓝留白),边框加粗; 图例同步改为空心蓝球示意。 Co-Authored-By: Claude --- src/routes/hot-map.tsx | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/routes/hot-map.tsx b/src/routes/hot-map.tsx index dafb1fc..2e0b455 100644 --- a/src/routes/hot-map.tsx +++ b/src/routes/hot-map.tsx @@ -425,12 +425,29 @@ function drawThemeNodes( const isPos = (n.bf3 ?? 0) >= 0; ctx.beginPath(); ctx.arc(n.x ?? 0, n.y ?? 0, r, 0, TAU); - ctx.fillStyle = isActive ? (isPos ? "#2563eb" : "#16a34a") : isPos ? "#3b82f6" : "#22c55e"; - ctx.globalAlpha = dim ? 0.15 : 1; - ctx.fill(); - ctx.strokeStyle = isPos ? "#1d4ed8" : "#15803d"; - ctx.lineWidth = 1.5; + // 正涨幅:蓝色实心;负涨幅:蓝色空心 + ctx.strokeStyle = "#3b82f6"; + ctx.lineWidth = isPos ? 1.5 : 2; + if (isPos) { + ctx.fillStyle = "#3b82f6"; + ctx.globalAlpha = dim ? 0.15 : 1; + ctx.fill(); + } else { + // 空心:仅描边,内部留白 + ctx.fillStyle = "#3b82f6"; + ctx.globalAlpha = dim ? 0.05 : 0.15; + ctx.fill(); + ctx.globalAlpha = dim ? 0.15 : 0.6; + } ctx.stroke(); + // 选中外环 + if (isActive) { + ctx.beginPath(); + ctx.arc(n.x ?? 0, n.y ?? 0, r + 3, 0, TAU); + ctx.strokeStyle = "#60a5fa"; + ctx.lineWidth = 1; + ctx.stroke(); + } } ctx.globalAlpha = 1; } @@ -1139,7 +1156,7 @@ function Legend({ maxCover, compact }: { maxCover: number; compact: boolean }) { 题材涨 - + 题材跌 @@ -1163,7 +1180,7 @@ function Legend({ maxCover, compact }: { maxCover: number; compact: boolean }) { 题材 · 涨幅为正
- + 题材 · 涨幅为负
球大小随涨幅绝对值增大