selfrelease
|
3f005779ae
|
fix: 统一卡片高度 - PersonCard 和 WithSpouse 卡片均设 min-h-[177px]
PersonCard(无配偶)原高 177px,WithSpouse(有配偶)原高 153px,
同行混排时高度不齐导致错行感。两种卡片统一最小高度 177px,
WithSpouse 内容区域垂直居中。
|
2026-07-16 16:13:46 +08:00 |
|
selfrelease
|
b4536c52ef
|
fix: 连线位置偏移修复 - 改用 offsetLeft/offsetTop 替代 getBoundingClientRect
根因: getBoundingClientRect 返回屏幕坐标(受 scale 影响),
初始定位过程中 scale 从 1→0.45 变化时,连线在中间状态计算,
导致坐标与最终布局不匹配。
修复: 使用 offsetLeft/offsetTop 遍历 offsetParent 链获取本地坐标,
完全不受 CSS transform/scale 影响,消除 scale 依赖。
|
2026-07-16 16:03:40 +08:00 |
|
selfrelease
|
ce06674cba
|
perf: 传统族谱视图全面优化
P0 性能优化:
- 连线计算用 requestAnimationFrame + useLayoutEffect 替代 7个 setTimeout 轮询
- 节点注册改为批量 ref 模式,消除 N 次 setState 重渲染
- 初始定位用 useLayoutEffect + 双 rAF 替代 600ms setTimeout
- 高亮定位用三 rAF 替代 1000ms setTimeout
- 使用 ResizeObserver 替代 window.resize 监听
P1 视觉优化:
- 连线从 div 改为 SVG path 绘制,清晰且支持动画
- 背景纹理图从 transparenttextures.com 本地化到 public/
- 添加骨架屏 loading 状态替代 return null
P2 代码质量:
- 移除 page.tsx 中 5 处 console.log
- 移除 family-node.tsx 中 3 处 console.log
- 消除 handleD3MemberClick 中的直接 DOM 操作(createElement/innerHTML)
- parseName 提取为模块级函数,避免每次渲染重建
P3 增强:
- 缩放范围从 0.1~2 调整为 0.15~3
- 工具栏显示当前缩放比例
- SVG 连线添加 transition 动画
|
2026-07-16 15:45:24 +08:00 |
|
freedakgmail
|
c2b890994d
|
0.8.4.0
|
2025-12-22 00:38:20 +08:00 |
|
freedakgmail
|
5a604e89f9
|
0.8.3.0
|
2025-12-21 22:42:39 +08:00 |
|
freedakgmail
|
5983f13282
|
0.8.2.0
|
2025-12-21 19:59:57 +08:00 |
|
freedakgmail
|
3489a10807
|
0.8.1.0
|
2025-12-21 19:24:52 +08:00 |
|
freedakgmail
|
5c8c70097c
|
0.8.0.0
|
2025-12-21 17:32:33 +08:00 |
|
freedakgmail
|
1ae59960e8
|
0.7.0.0
|
2025-12-10 15:21:27 +08:00 |
|
freedakgmail
|
e7167f4340
|
0.6.2.0
|
2025-12-10 13:03:10 +08:00 |
|
freedakgmail
|
47be495fcf
|
0.6.1.0
|
2025-12-10 11:41:28 +08:00 |
|
freedakgmail
|
77df6a0e74
|
0.6.0.3
|
2025-12-10 11:13:16 +08:00 |
|
freedakgmail
|
e9b1641509
|
0.6.0.2
|
2025-12-10 10:19:29 +08:00 |
|
freedakgmail
|
09809c0e49
|
0.6.0.1
|
2025-12-09 18:52:00 +08:00 |
|
freedakgmail
|
25ae1107ee
|
0.5.0.3
|
2025-11-30 22:14:24 +08:00 |
|
freedakgmail
|
dd2f67073b
|
0.5.0.2
|
2025-11-30 22:04:36 +08:00 |
|
freedakgmail
|
8a1e03d616
|
0.5.0.1
|
2025-11-30 21:32:39 +08:00 |
|
freedakgmail
|
025f2b619f
|
0.5.0.0
|
2025-11-30 21:20:51 +08:00 |
|
freedakgmail
|
a2873bf3c2
|
0.3.1.4
|
2025-11-30 20:11:34 +08:00 |
|
freedakgmail
|
0326894b09
|
0.3.1.3
|
2025-11-30 20:00:18 +08:00 |
|
freedakgmail
|
b7f3592db3
|
0.3.0.6
|
2025-11-30 14:00:42 +08:00 |
|
freedakgmail
|
89f1e061d4
|
0.3.0.5
|
2025-11-30 13:09:52 +08:00 |
|
freedakgmail
|
fd9c064749
|
0.3.0.0
|
2025-11-30 09:16:43 +08:00 |
|
freedakgmail
|
b25f4bea02
|
0.0.9.0
|
2025-11-24 16:07:24 +08:00 |
|
freedakgmail
|
3d075c6076
|
0.0.8.5
|
2025-11-24 14:02:34 +08:00 |
|
freedakgmail
|
3375a79ed4
|
0.0.5.1
|
2025-11-23 15:56:24 +08:00 |
|
freedakgmail
|
d797f1abb9
|
0.0.4.0
|
2025-11-23 14:46:53 +08:00 |
|
freedakgmail
|
2b4bc92f1b
|
0.0.3.0
|
2025-11-23 13:31:06 +08:00 |
|
freedakgmail
|
bade25ff26
|
0.0.1.2
|
2025-11-23 09:13:25 +08:00 |
|
freedakgmail
|
c033e46782
|
0.0.0.4
|
2025-11-22 23:49:24 +08:00 |
|
freedakgmail
|
43c8389705
|
0.0.0.1
|
2025-11-22 19:52:55 +08:00 |
|