animation 与 transition 的根本区别:transition 需要状态变化触发且只有起止两点;animation 由 @keyframes 定义多帧,可自动播放、循环、反向。常用子属性:name、duration、timing-function、delay、iteration-count、direction、fill-mode。
循环骨架屏、加载指示器、呼吸效果这类「一直在动」的需求,都是 animation 的主场。配合 prefers-reduced-motion 媒体查询,还能尊重系统减少动画的偏好。
@keyframes spin { to { transform: rotate(360deg); } } .loader { animation: spin 1s linear infinite; } @media (prefers-reduced-motion: reduce) { .loader { animation: none; } }