taste-motion 是一套动效工艺规范,用于指导智能体构建的界面动效。其核心理念是:动效的职责是解释界面(发生了什么、内容在哪里、下一步做什么),而不是装饰。资料以规则手册形式给出,不包含安装命令、代码示例或平台限制说明。
一、用途与总体原则 该规范用于约束界面动画的时长、缓动、可动画属性、编排节奏、微交互、滚动行为以及无障碍降级,目标是产出性能稳定、层级清晰、无冗余循环的动效。资料明确:无法用一句话解释的动画应删除。
二、主要能力
- 时长令牌:提供 --dur-fast(100–150ms,用于悬停、按下、焦点环)、--dur-base(200–300ms,用于小入场与状态切换)、--dur-slow(400–600ms,用于区块揭示与页面级过渡)、--dur-hero(600–900ms,用于唯一主视觉入场)。低于 100ms 视为闪烁(除非刻意)、超过 900ms 视为缓慢站点。
- 缓动令牌:标准 cubic-bezier(0.4, 0, 0.2, 1) 用于悬停与切换;强调 cubic-bezier(0.22, 1, 0.36, 1) 用于入场与揭示;退出 cubic-bezier(0.4, 0, 1, 1) 更利落;弹性 cubic-bezier(0.34, 1.56, 0.64, 1) 仅限玩趣风格、每元素最多一次、禁止循环。禁用 ease-in-out 作为通用缓动,linear 仅用于跑马灯与进度。
- 可动画属性:只允许 transform 和 opacity,以保证 60fps。禁止动画 width/height、margin、top/left、大范围 box-shadow(改用预模糊伪元素)、大面积 filter: blur。
- 入场编排:每个区块一个场景,滚动揭示时元素分 2–3 阶段进入(标题→正文→CTA),间隔 60–120ms,时长与缓动一致。揭示位移不超过 20px(translateY 8–16px)并配合透明度。缩放入场仅用于弹窗/浮层(0.96→1),不用于整段。主视觉只做一次 600–900ms 序列,禁止循环浮动或重复波浪。每页只允许一类循环:环境状态指示(如在线点、加载器、旋转器)。
- 微交互:悬停 100–150ms、标准缓动、只改变一个属性(背景色调、边框或 translateY −1 至 −3px),禁止同时改变颜色、位置和阴影。按下为悬停的反向(下移、去阴影),80–120ms。焦点可见使用 2px 环、3:1 对比度、outline-offset: 2px,并以 100ms 淡入;禁止无替代地 outline: none。禁用态无悬停效果,视觉惰性(透明度 0.4–0.5,不变指针)。
- 滚动与布局:滚动触发使用 IntersectionObserver(或支持的 CSS animation-timeline),每元素只揭示一次,禁止反复重播。粘性定位可用于导航与区块标签,但避免与动画叠加。视图/页面过渡 300–500ms,共享元素用于列表→详情,并在 prefers-reduced-motion 下完全禁用。布局过渡采用 FLIP 模式(基于 transform),禁止重排动画。
- 减少动态效果:资料给出 @media (prefers-reduced-motion: reduce) 的全局降级代码,将动画与过渡时长设为 0.01ms、循环次数 1、滚动行为自动;并在媒体查询匹配时默认零动效,取消视差、自动轮播和跑马灯。内容仅以透明度一帧出现。
- 检查清单:超过约 1.5s 的非循环动画、每视口多于一个循环元素、动画 width/height/margin/top、揭示位移超过 20px、全局使用 ease-in-out、所有元素加载时都弹跳入场、缺少 prefers-reduced-motion 处理,任一出现即判定页面不合格。
三、使用方式 资料为设计规范与约束清单,未提供安装命令或组件代码,需在实现界面时按上述令牌和规则手动应用。
四、适用场景与限制 适用于智能体构建的前端界面动效设计与评审,尤其适合需要统一动效语言、控制性能和无障碍降级的项目。资料未提供平台兼容性、浏览器支持范围、收费或价格信息。