小程序迁移 静态页面完成!!!

This commit is contained in:
Neo
2026-03-18 05:14:35 +08:00
parent 72bb11b34f
commit 075caf067f
124 changed files with 10407 additions and 2738 deletions

View File

@@ -0,0 +1,146 @@
# 进度条动画配置文档
> 文件路径:`apps/miniprogram/miniprogram/pages/task-list/`
---
## 概览
进度条动画由两段独立动画组成,通过 `animation-delay` 精确衔接,形成「高光扫过 → 点燃火花」的连续叙事效果。
```
┌──────────────────┐ SHINE_SPARK_GAP ┌──────────────────┐ SPARK_SHINE_GAP ┌──────────────────┐
│ 高光从左扫到右 │ ────────────────▶ │ 火花爆发消散 │ ────────────────▶ │ 高光(下一循环) │
│ SHINE_DUR(s) │ │ SPARK_DUR(s) │ │ │
└──────────────────┘ └──────────────────┘ └──────────────────┘
```
**核心机制**:两段动画共享同一 `animation-duration`totalDur火花通过负值 `animation-delay` 在循环内偏移到正确时刻。`@keyframes` 只描述各自行为,**修改时间轴参数永远不需要改 CSS 百分比**。
---
## 第一层:时间轴参数
**位置**`task-list.ts` 文件顶部常量区
```ts
const SHINE_DUR = 1.6 // 秒
const SPARK_DUR = 1.4 // 秒
const SHINE_SPARK_GAP = -200 // 毫秒
const SPARK_SHINE_GAP = 400 // 毫秒
```
| 参数 | 类型 | 说明 |
|------|------|------|
| `SHINE_DUR` | 秒(正数) | 高光从进度条**左端**扫到**右端**的时长。值越小扫得越快。 |
| `SPARK_DUR` | 秒(正数) | 火花从**爆发**到**完全消散**的时长。值越大火花飞得越慢。 |
| `SHINE_SPARK_GAP` | 毫秒(正/负) | 高光结束 → 火花开始的偏移。**正数** = 高光结束后停顿再爆发;**负数** = 高光尚未结束,火花提前爆发(产生重叠的点燃感)。 |
| `SPARK_SHINE_GAP` | 毫秒(正/负) | 火花消散后 → 下次高光从左端启动的延迟。**正数** = 停顿一段时间后重新开始;**负数** = 火花尚未消散,高光已从左端出发(自然流畅衔接)。 |
> ✅ **修改这四个常量后,不需要改任何 CSS**totalDur 和 sparkDelayCss 由 `calcAnimTimeline()` 自动计算并注入 WXML style。
### 总循环时长计算公式
```
totalDur = SHINE_DUR + SHINE_SPARK_GAP/1000 + SPARK_DUR + SPARK_SHINE_GAP/1000
```
当前默认值:`1.6 + (-0.2) + 1.4 + 0.4 = 3.2 秒`
---
## 第二层:高光外观
**位置**`task-list.wxss``.tier-shine` 选择器顶部
```css
.tier-shine {
--shine-width: 50%; /* 光束宽度 */
--shine-opacity: 1.0; /* 峰值亮度 */
--shine-color: 255, 255, 255; /* RGB 颜色 */
}
```
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `--shine-width` | `50%` | 光束宽度,相对于进度条填充区域。越大光晕越宽,`30%` 偏细锐,`80%` 偏宽柔。 |
| `--shine-opacity` | `1.0` | 光束中心峰值亮度,范围 `0~1``0.5` = 半透明柔光,`1.0` = 最亮。 |
| `--shine-color` | `255, 255, 255` | 光束颜色RGB 三通道逗号分隔。`255,220,100` = 暖黄;`255,180,80` = 橙;`200,230,255` = 冷白蓝。 |
---
## 第三层:火花外观
**位置**`task-list.wxss``.tier-edge-glow` 选择器顶部
```css
.tier-edge-glow {
--spark-scale: 0.7; /* 整体缩放 */
--spark-pole-h: 30rpx; /* 光柱高度 */
}
```
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `--spark-scale` | `0.7` | **整体缩放比**,同时等比缩放:光柱尺寸 + 全部粒子大小 + 飞射距离。`0.5` = 缩小一半,`1.0` = 原始大小,`2.0` = 放大一倍。 |
| `--spark-pole-h` | `30rpx` | 光柱(白色竖线)高度,宽度自动 = 高度 / 2。调大使光柱更醒目。 |
---
## 火花粒子参数
6 粒火花固定写在 `task-list.wxss`,各自方向/颜色/大小不同。如需微调单个粒子,直接修改对应的 `.spark-N``@keyframes sparkN`
| 粒子 | 颜色 | 方向 | 大小 | 爆发时刻 |
|------|------|------|------|----------|
| `spark-1` | 亮白 `#ffffff` | 右上 | 10×10rpx | 8%(较早)|
| `spark-2` | 橙色 `#fb923c` | 右下 | 12×12rpx | 12% |
| `spark-3` | 黄色 `#fde68a` | 正上 | 8×8rpx | 6%(最早)|
| `spark-4` | 红橙 `#ef4444` | 右斜上(带旋转) | 16×6rpx | 10% |
| `spark-5` | 黄白 `#fbbf24` | 正右 | 10×10rpx | 5%(最早)|
| `spark-6` | 淡橙 `#fed7aa` | 右下斜 | 14×14rpx | 15%(最晚)|
> 爆发时刻百分比 = 粒子自身 `@keyframes` 内的时刻,与总循环时长无关。
---
## 进度末端位置逻辑
火花始终显示在进度条末端,位置由 `perfData.clampedSparkPct` 控制:
```ts
clampedSparkPct = Math.max(0, Math.min(100, filledPct))
```
| 场景 | 火星位置 |
|------|----------|
| 0h未开始 | 进度条**最左端**0%|
| 任意进行中 | 对应进度处 |
| 220h满档 | 进度条**最右端**100%|
---
## 快速调参示例
### 想要「高光快、火花慢」
```ts
const SHINE_DUR = 0.8 // 高光加速
const SPARK_DUR = 2.0 // 火花放慢
const SHINE_SPARK_GAP = 0 // 高光结束立即爆发
const SPARK_SHINE_GAP = 600 // 火花消散后停顿
```
### 想要「高光和火花完全重叠」
```ts
const SHINE_DUR = 1.6
const SPARK_DUR = 1.4
const SHINE_SPARK_GAP = -800 // 高光还差 0.8s 结束时,火花就开始了
const SPARK_SHINE_GAP = -600 // 火花还差 0.6s 消散时,高光已从左端出发
```
### 想要「更大更明显的火花」
```css
/* task-list.wxss → .tier-edge-glow */
--spark-scale: 1.4; /* 放大到原来的 2 倍 */
--spark-pole-h: 50rpx; /* 光柱更高 */
```