这是去年作者尝试用 CSS 重现Rach Smith 的 P5.js 动画的经历。动画看似简单易实现,但实际操作有难度,手动更新每个盒子的位置和方向较棘手。
- 最初通过在
keyframes
中追踪单个盒子位置,利用不同的animation-delay
值让其他盒子均匀间隔并立即开始动画,如.box
类的样式。 - 几天后发现更简单方法,使用
offset-path
属性,通过inset()
函数创建正方形路径,让盒子沿其移动,如.box
类的另一种样式。 - 介绍了线性缩放,即根据盒子索引等比例分配
animation-delay
值,浏览器已支持tree counting functions
,可替换为native sibling-index()
和sibling-count()
函数,linear scaling
有多种用途,如创建不透明度或颜色范围,css-doodle
中的@iI()
函数能更简洁实现相同结果。 - 用
css-doodle
重写代码更简单,@t
可替代animation
和keyframes
,如offset-distance: @t(/100%, +@iI(*100%));
,还给出完整动画代码及相关注意事项,如inset()
函数支持round
关键字可产生微妙翻转效果。 - 最近发现
offset-path
接受polygon()
等形状函数,css-doodle
的@shape
函数可轻松生成多边形,通过改变offset-distance
比例可产生拖尾效果,还给出多个自定义形状的例子,性能虽不如 canvas 但仍有趣。 - 还重现了@beesandbombs的螺旋动画,先创建不同边数的多边形置于背景,调整
r
值使其边长相同,反转多边形绘制顺序,最后添加小点点并通过offset-distance
创建相同偏移路径并动画,给出相关代码。整个过程充满乐趣,又解决一个难题。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。