QORMQORM v0.8.4 api 开始使用 EN

动画

QORM 的动画是声明式且横切的:任意节点——内置组件或组件实例——都能携带一个 animation 属性并播放入场效果。入场效果在节点挂载时触发。实时更新会就地变形 DOM, 因此当节点被新建时(例如向绑定列表追加一项)效果会重播,而不是每次状态变化都播。

animation 属性(任意节点)

{ "type": "card", "animation": "fadeup", "duration": 450, "children": [ … ] }

对组件实例同样适用:

{ "type": "ProductCard", "animation": "pop", "props": { "name": "Cup" } }

调节属性(全部可选):

属性默认含义
animation效果名(见下);可绑定——"{{state.effect}}" 让智能体通过改状态切换动画
duration450毫秒
delay0开始前的延迟毫秒数(绑定索引可让列表逐项错开)
curvecubic-bezier(.34,1.2,.64,1)缓动曲线
repeat1播放次数(infinite 用于持续吸引注意)

效果

sliderightscalezoomoutrotateflippop

动画组件

对于值驱动(而非入场)的运动,使用 Flutter 风格的组件:

——每当绑定值变化时平滑过渡样式(durationcurve)。

rotationtransitionsizetransitionheroanimatedswitcher)——与专门的 包裹组件相同的入场效果。

普通的 transition 样式属性(如 "transition": "all .2s")也适用于任意节点, 用于简单的 CSS 过渡。

主题动效 token

皮肤除颜色外还携带动效词汇。每个 themes/*.json 可声明 motion 段;原生 canvas 后端直接消费它,HTML/WebView 后端则以同名 CSS 自定义属性暴露同一套数值:

"motion": {
  "durationFast": 120,
  "durationNormal": 250,
  "durationSlow": 400,
  "easingStandard": "easeOutCubic",
  "easingEmphasized": "easeInOutCubic"
}

默认采用 durationNormal + easingStandard——显式属性仍然优先。HTML 端落地为 var(--qorm-motion-normal) / var(--qorm-motion-standard),手写 transition 样式同样可以引用。

easeOutCubic / easeInOutCubic 写法,以及 token 别名 standard / emphasized)。

默认值;逐皮肤的 JSON 数值在原生 canvas 后端生效。