跳到正文

过渡与动画

用基础样式上的 transition 为样式变化添加动画。每一帧都不会重新运行组件。

#悬停过渡

<Button style={{
  bg: "#2563eb",
  transition: { property: "bg", duration: 160 },
  hover: { bg: "#1d4ed8" },
}}>Hover</Button>

#状态驱动的动画

根据状态改变样式,并保持该节点挂载。不要在每一帧重建组件。

<View style={{
  bg: selected() ? "#2563eb" : "#334155",
  opacity: selected() ? 1 : 0.6,
  transition: { property: ["bg", "opacity"], duration: 180 },
}} />

#时长与帧率

时长接受毫秒数或 "180ms" 这样的字符串。需要上限时设置缓动和 maxFps。省略 maxFps 则跟随显示器。

#支持的属性

颜色、边框、圆角、透明度、阴影和变换会插值。宽度、高度和内边距不会。

#挂载与减少动态效果

当组件支持时,在退出过渡期间保持浮层挂载。Show 会立即移除子节点。过渡会遵循系统的「减少动态效果」设置。可在窗口上设置 reduceMotion 来覆盖它。

#动态图像

Image 会播放你传入路径的 GIF 和 WebP 文件。不需要定时器。

<Image value={path} style={{ width: 96, height: 96, objectFit: "contain" }} />