用途:AutoAnimate 是一个零配置的动画工具,用于为 Web 应用中的 DOM 变化自动添加平滑过渡,适合列表重排、增删条目、筛选结果、手风琴展开等场景。
主要能力:监听父元素下直接子元素的三种变化——子元素添加时淡入、移除时淡出、移动时平滑改变位置。支持 React、Vue、Svelte、Solid 和原生 JavaScript,体积约 1.9KB。
使用方式:安装命令为 npm install @formkit/auto-animate。原生 JS 中导入 autoAnimate 并传入父元素即可,例如 autoAnimate(document.getElementById('list'))。React 提供 useAutoAnimate Hook,Vue 提供 v-auto-animate 指令与组合式函数,Svelte 提供 use:autoAnimate 动作,Solid 提供 createAutoAnimate。可配置 duration(默认 250 毫秒)、easing(默认 ease-in-out)等选项,也可传入返回 KeyframeEffect 的函数自定义动画。原生用法可通过返回的控制器调用 disable()、enable()、isEnabled() 控制动画开关。
适用场景:待办列表、可排序列表、搜索或筛选结果、手风琴等需要动态增删或重排元素的界面。
限制:仅对父元素的直接子元素生效;元素需要稳定的 key 或标识才能正确检测移动;子元素上的 CSS 动画可能冲突;DOM 变化过快时可能出现视觉异常。默认遵循 prefers-reduced-motion,可通过 disrespectUserMotionPreference 覆盖。建议将动画应用于父元素而非单个条目,时长保持在 200-300 毫秒。