一只戴头盔的鹈鹕骑着青绿色单车,沿着海岸不紧不慢地前进。 纯 SVG 绘制,车轮与地面同步,腿部用 IK 反解,身体随踏频轻轻起伏。
已遵循系统的减少动态效果偏好,动画默认暂停;可以手动开始。
这是鹈鹕测试的一份答卷——一只戴头盔、系围巾的鹈鹕,骑着青绿色自行车沿海岸前进。 画面里的所有元素都是纯 SVG 绘制,动画由 CSS 变量和 JavaScript 驱动,没有任何外部素材。
骑行本身用了几个小技巧:车轮旋转的角度同时驱动地面位移,
位移量等于 角度 × 车轮半径,所以视觉效果是「轮子转多少,地面就走多少」。
两条腿用逆向运动学反解膝盖位置,
上下两个踏板各占半圈,踩踏动作是物理正确的。
鹈鹕的身体会随踏频上下起伏(每转两周期), 髋部同步移动,头部因惯性轻微点头,围巾与尾羽甩动; 车链用流动虚线模拟传动,轮辋上的气门嘴让转速一目了然。
播放 / 暂停带惯性缓动,加速与刹车都有过渡。
海岸、云、草丛都用 <use> 复用同一小段 tile 无缝循环,
海浪用 patternTransform 缓慢漂移,海鸥则以正弦波驱动飞掠与扇翅。
支持 点击画面播放 / 暂停,或按 空格;
按 1 2 3 切换 0.5× / 1× / 1.5× 速度,
按 T 切换主题。动画遵循系统的减少动态效果偏好。
灵感来自 Simon Willison 的鹈鹕基准测试。