动画可以帮助强化层次感和空间方向感。本文档介绍了添加动画时应遵循的原则。
原则
起点
- 动画可以帮助锚定界面元素。例如,菜单可以从打开它的按钮处放大显示。
- 动画可以帮助营造位置感;例如,侧边栏可以从侧面滑入,暗示它一直隐藏在屏幕之外。
- 设计动画时,要像处理真实世界的材料一样。想象你的界面元素是由真实材料制成的——当它们不在屏幕上显示时,它们在哪里?使用动画来帮助表达这一点。
速度
- 动画绝不应阻碍用户交互。动画应该快速,几乎总是在 0.2 秒内完成。
- 用户不应为了能够交互而必须等待动画完成。
- 动画应具有良好的性能。尽可能使用
transformCSS 属性,这些属性会在 GPU 上渲染元素,使其更加流畅。 - 如果动画无法做到既快速又高性能,就不要使用它。
简洁
- 如果材质不是橡胶做的,就不要弹跳。
- 不要旋转、折叠或沿曲线路径做动画。保持简洁。
一致性
要创建一致的动画,我们必须为元素在动画过程中的行为建立物理规则。当所有动画都遵循这些规则时,它们会显得一致、相互关联且可预测。动画应符合用户的期望,如果不符合,它可能就不是适合这项任务的正确动画。
如果已有适合你任务的动画,请复用它。
无障碍注意事项
- 动画应该微妙。要注意存在由运动引发的前庭障碍的用户。
- 不要对当前正在向自适应技术报告内容的元素(例如正在接收更新的
aria-live区域)进行动画处理。这可能会导致混乱,因为该技术会尝试解析一个正在不断变化的区域。 - 避免使用并非由用户行为直接触发的动画。
- 只要有可能,请确保动画遵循操作系统级别的“减弱动态效果”设置。这可以通过使用
prefers-reduced-motion媒体查询来实现。在样式表中,将animation和transition规则放在@media not (prefers-reduced-motion)内,或者在使用 React 时使用@wordpress/compose中的useReducedMotion钩子。
复用动画清单
通用的 Animate 组件用于为界面的不同部分添加动画效果。有关可用动画的更多详情,请参阅组件文档。