Skip to content

v0.3.2

Choose a tag to compare

@UNscientific-9 UNscientific-9 released this 29 Aug 14:16
· 5 commits to main since this release

修复:展开动画「字体鬼畜」(闪现 + 结尾硬切)

v0.3.1 的展开动画有两处时序缺陷叠加,表现为点击展开的一瞬间内容先以完整形态闪现一帧、被压没、空白长高 220ms 后文字又瞬间蹦出:

  • 起点闪现:压 0/隐身约束写在 setTimeout 宏任务里,晚于首帧 paint。现改为 queueMicrotask 微任务首测——保证在官方父组件摘除 hidden 之后、浏览器 paint 之前完成「测高 → 压 0 → 启动 WAAPI」,内容从未以完整形态上屏。微任务不依赖 rAF,IAB 后台兼容性不变。
  • 结尾硬切:展开方向 opacity 原为 0→0(无淡入)。现按方向拆开 keyframes,展开 0→1 平滑淡入,收起保持 1→0 淡出。
  • 首测失败(内容异步物化)时立即预压 0 阻止后续帧闪现,回退轮询 + 解除约束测量,3 次失败照旧回退官方瞬间切换。

并发 review 修正

  • 预压态测量同步解除 margin 约束(原动画终点 margin 被内联 0 污染,动画结束行距跳变)
  • cancel 后旧微任务/轮询不得再预压(杜绝行永久隐身残留)
  • reverse 返回「是否仍活跃」,调用方不再残留已完成的 handle(原可致折叠条点击永久失效)
  • 浏览器外部取消动画时立即恢复布局(原最长隐身 720ms)

验证

  • 40 个纯逻辑测试全绿(tsc strict / node:test)
  • 复现页 A/B 逐帧实测:旧逻辑首开帧 0 闪现(FAIL)→ 新逻辑 37 帧采样 0 闪现、opacity 0→1 平滑(PASS)
  • 真实宿主 0.1.2-alpha.1 装载验证通过(bundles 配置不变,升级仅替换 tgz)

安装:下载下方 tgz,按 README 更新 profile 的 file: 依赖后重启宿主即可(v0.3.1 → v0.3.2 无配置变更)。