HOVER · 悬停交互
参数调改
PLAYGROUND
牌面宽度--card_w
44110
翻牌时长--dur_ms
2401400
数字字号--font_px
2876
数字颜色--num_color
牌面底色--card_color
强调色--accent
翻牌缓动--ease
实现要点
NOTES- 01
翻牌的半面拼接原理:上下两个 overflow:hidden 的半窗各显示同一整字的半截(伪元素行高等于整卡高、下半窗内容 translateY(-50%) 对齐),旋转发生在叠在上面的翻板上,而不是静态窗——所以任意帧上下两半永远拼成一个完整数字。
- 02
翻页分两段触发:上翻板(显示旧值)rotateX 0 → -90° 折下;animationend 后静态上半窗换成新值,下翻板(显示新值)从 rotateX 90° → 0° 展开,结束后静态下半窗换新值并移除翻板。两段都靠 animationend 串接,不猜时长。
- 03
生成翻板后必须 void el.offsetHeight 强制 reflow 再加动画类,否则初始 rotateX 状态来不及渲染,翻板会瞬间跳到终态。
- 04
perspective 放在翻牌容器上(子元素共享同一个灭点),翻板 backface-visibility: hidden 防止折过 90° 时露出镜像;翻动只动 transform(合成器路径),两块翻板的生命周期用完即删,DOM 不会累积。
- 05
进位节奏:个位翻完 35% 时十位才开始翻,模拟机械翻页时钟的错峰;真实倒计时场景把 tick 换成 setInterval(1000) 驱动即可。
- 06
无障碍:容器 role=status + aria-live=polite,数值变化通知读屏;reduced-motion 下隐藏翻板、新旧值直接切换(语义不变,只是没有翻转动画)。
源代码
SOURCE
加载源代码…