百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

AutoAnimate,一款零配置 JavaScript 过渡动画库

yund56 2025-07-21 21:24 3 浏览

嗨,大家好,我是镇长,lee。

又到了与大家见面的时间,今天向小伙伴们分享另一款 JavaScript 动画库 -- AutoAnimateAutoAnimate 是一个零配置的嵌入式动画库,可添加平滑的过渡。您可以将它与 React、Solid、Vue、Svelte 或任何其他 JavaScript 应用程序一起使用。

https://github.com/formkit/auto-animate

AutoAnimate 简介

AutoAnimate 是一款无需任何配置的过渡动画库。只需使用一行代码将自动动画添加到您的 JavaScript 应用程序中。下面我们一起走入 AutoAnimate 的神秘世界吧。

安装 AutoAnimate

使用 AutoAnimate 之前,先将包引入到项目中,这次使用包管理工具进行安装。

使用 yarn

yarn add @formkit/auto-animate

使用 npm

npm install @formkit/auto-animate

基本用法

开始之前先介绍下 autoAnimate 函数,它接收执行动画的父元素。自动动画将被应用在父元素及其直接子元素上,三个阶段会自动触发动画:

  • o 添加:子级元素添加到 DOM 中时
  • o 删除:子级元素从 DOM 中删除时
  • o 移动:子级元素在 DOM 移动时

有了上面的知识储备,下面我们开始使用 AutoAnimate 创建动画,首先创建一个原生的 JavaScript 示例。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="dropdown" class="dropdown">
    <span id="button" class="dropdown-label">
      Toggle
    </span>
  </div>
  <script type="module">
    import autoAnimate from './js/autoAnimate.js'
    const btn = document.getElementById('button')
    btn.addEventListener('click', toggle)
    const dropdown = document.getElementById('dropdown')

    autoAnimate(dropdown) // 调用 AutoAnimate 函数,将父元素传入
  
    const p = document.createElement('p')
    p.innerText = "我是新增的内容,使用 autoAnimate 添加过渡动画"
    function toggle () {
      dropdown.contains(p) ? p.remove() : dropdown.appendChild(p)
    }
  </script>  
</body>
<style>
  .dropdown {
    border: 1px solid black;
    border-radius: 10px;
    padding: 10px 20px;
    width: 300px;
  }
</style>
</html>

上面的例子,在父元素 dropdown 中插入和删除 p 标签,通过 toggle 按键切换,一个很简单的一个功能。只需一行代码 autoAnimate(dropdown) 引入 autoAnimate 函数将父元素 dropdown 传递给它,自动实现切换的过渡效果。相关如下:

进阶用法

AutoAnimate 旨在以零配置的方式使用,无需让开发人员投入过多的精力大幅度提升应用程序的用户体验。除了默认配置外,还提供了一些可选的配置项:

autoAnimate(el, {
  // 动画持续时间,以毫秒为单位(默认值:250)
  duration: 250,
  // 运动的缓动函数(默认值:'ease-in-out')
  easing: 'ease-in-out',
  // 当设置为 true 时,即使用户通过 prefers-reduced-motion 表示不希望有动画,也将启用动画。
  disrespectUserMotionPreference: false
})

其中包括设置动画持续时间、缓动函数以及是否忽略用户对减少动画的偏好。

AutoAnimate 支持 ReactVuePreactSolidSvelte 等框架,下面以 Vue 为例,演示如何在框架中使用。在 Vue 中支持两种使用方式:

  • o 指令:v-auto-animate
  • o 组合: useAutoAnimate

指令

<script setup>
import { ref } from 'vue'
const items = ref(["","","","","", ... ])
function removeItem(toRemove) {
  items.value = items.value.filter((item) => item !== toRemove)
}
</script>

<template>
  <h5>Click emojis to remove them.</h5>
  <ul v-auto-animate>
    <li
      v-for="item in items"
      :key="item"
      @click="removeItem(item)"
    >
      {{ item }}
    </li>
  </ul>
</template>

将指令添加到父元素上,另外 v-auto-animate 支持配置参数 <ul v-auto-animate="{duration: 200}">

组合

<script setup>
import { ref } from "vue"
import { useAutoAnimate } from "@formkit/auto-animate/vue"

const balls = ref(["red", "green", "blue"])
const [parent] = useAutoAnimate({ duration: 500 })
setInterval(() => {
  balls.value.push(balls.value.shift()!)
}, 600)
</script>

<template>
  <ul class="balls" ref="parent">
    <li v-for="color in balls" :key="color" :class="color">
      {{ color }}
    </li>
  </ul>
</template>

通过引入 useAutoAnimate 实现,效果如下图:

总结

通过这篇入门指南,希望你对 AutoAnimate 有了初步的了解。当你在项目中需要引入过渡动画效果时,希望能想起来它。不仅功能强大,更是开发者友好,零配置提升用户体验的绝佳神器。


更多内容请关注公众号:猿镇

相关推荐

[西门子PLC] S7-1200+触摸屏TP700动画:3种办法制作技巧与案例

有同学问:西门子博图精简触摸屏与2个S71200能同时通讯吗?我现在有两个西门子S-1200PLC,想和一个西门子7寸精简型触摸屏通讯。具体该怎么配置,请教一下各位师傅回答:S7-1200和TP700...

HTML5画布类库EaselJS生成鼠标控制的游戏动画人物

第一节:EaselJS生成游戏动画人物效果本节中将使用SpriteSheet和Sprite生成HTML5游戏中的动画人物形象使用SpriteSheet定义动画帧相关的图片,并且使用Sprite定义动画...

一亿家长五星推荐!金牌动画《萌鸡小队》4K大电影来咯

一亿家长五星推荐200亿播放量的金牌动画IP首度亮相大银幕啦合家欢动画电影《萌鸡小队:萌闯新世界》江苏有线4K特别版块全网首播收获成长和友谊理解爱与勇气陪孩子一起快乐冒险吧~来源:江苏有线今日看点...

JavaScript简介:从概念、特点、组成和用法全面带你快速了解JS

“这里是云端源想IT,帮你轻松学IT”嗨~今天的你过得还好吗?我们总是先扬起尘土然后抱怨自己看不见-2024.04.15-JavaScript,简称JS,是一种轻量级的解释型编程语言,它是网页开...

总结100+前端优质库,让你成为前端百事通

1年多时间,陆陆续续整理了一些常用且实用的开源项目,方便大家更高效地学习和工作.js相关库js常用工具类「lodash」一个一致性、模块化、高性能的JavaScript实用工具库。「xij...

实现一个九宫格跳动loading动画 #前端开发

今天来实现一个九宫格跳动loading动画。·九个小方格会不断地交错跳动。·准备一个方块容器,小方块通过js来生成。js动态生成9个小方格,每个方格的动画延迟错开0.1秒。·使用flex布局让整体居中...

Dynamics.js – 创建逼真的物理动画的 JS 库

Dynamics.js是一个用于创建物理动画JavaScript库。你只需要把dynamics.js引入你的页面,然后就可以激活任何DOM元素的CSS属性动画,也可以结合SVG使...

《火影忍者 博人传》动画化决定!OVA将于JSAF2016先行上映!

JUMP人气漫画《火影忍者》虽然说已经完结很久了,但JUMP和岸本貌似没有停下来的节奏。各种原创动画、外传漫画、剧场版动画接二连三地推出,有些火迷们都感觉看腻了。然而这波节奏还没停!据悉,曾经推出过剧...

强大 WebView2 + 不用写 JavaScript 的 htmx.js 「小轻快」开发桌面程序

WebView2是越来越香了。WebView2不但是Win11自带的系统组件,Win10也已经自动推送安装。即使是少量没有安装WebView2的系统——使用aardio中的we...

小学数学老师用DeepSeek做动画课件,一个提示词轻松搞定。

  前几天我分享了一篇关于小学数学老师想做动画课件,DeepSeek-V3让数学知识"动"起来!。这篇文章收到了很多老师的好评,他们直呼好用,并表示学到了很多实用技巧。但也有老师反馈了...

手把手教你H5实现工厂游戏的CSS动画效果「实践」

作者:吴冠禧WecTeam转发连接:https://mp.weixin.qq.com/s/u5GHsA0vHz8A_MmGslRw2g0契机与背景今年Q1(2020年第一季度)参与了京喜事业部「京...

10个帅酷的HTML5最新动画应用(html5简单的动画)

在上个月,我们收集了不少来自国内外的HTML5相关资源和jQuery插件,其中包括很多经典帅酷的HTML5动画应用,有些还利用了Canvas和SVG的相关特性,从而让HTML5动画更加具有强烈的视觉效...

你需要知道的 15 个很棒的 CSS 动画库

从一种CSS样式配置到另一种的过渡可以使用CSS动画进行动画处理。描述CSS动画的样式和指示动画样式的开始和结束状态的一组关键帧,以及可能的中间路点,构成了动画。与传统的脚本驱动动画技术相...

Three.js 实现虎年春节3D创意页面

前言本文由dragonir授权发布,作者还有很多关于Three.js的作品,刚开始看到这个作品,觉得很有趣,虽然对Three.js完全不懂,哈哈,原文地址:https://segmentfault.c...

性能出色,纯CSS实现的loading动画——Loaders.css

介绍loaders.css是Github上一个使用纯粹的css实现的开源loading动画库,完全用CSS编写的加载动画的集合。每个动画仅限于CSS属性的一小部分,以避免复杂的绘画和布局计算。下面这张...