自动过渡动画 - AutoAnimate 库

本文给大家介绍一个一行代码添加过渡动画的库。

介绍

AutoAnimate是一个零配置、投入式动画实用程序,可以为您的Web应用程序添加平滑的过渡。您可以将其与React、Solid、Vue、Svelte或任何其他JavaScript应用程序一起使用。

官方地址: https://auto-animate.formkit.com/

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

简而言之,AutoAnimate 是一个能够一行代码直接添加过度动画的库,无需再去了解繁杂的 css 属性,以及动画相关的知识。

在一些快速验证的场景中尤其适用。

本文主要介绍在 vue 中的使用方式。

安装

安装依赖

yarn add @formkit/auto-animate

注册指令

import { createApp } from 'vue'
import { autoAnimatePlugin } from '@formkit/auto-animate/vue'
import App from 'App.vue'

createApp(App).use(autoAnimatePlugin).mount('#app')

当然,你也可以直接引入使用

import { vAutoAnimate } from '@formkit/auto-animate'

基本使用

插件注册之后即可在你需要动态变化的元素(主要是循环中的元素)的父元素中使用v-auto-animate 即完成,非常地简单,以下为官方示例:

<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>

运行可得以下结果:

在这里插入图片描述
一个循环列表删除单条的动画就自动加上去了,无需再用其他的什么操作

进阶使用

AutoAnimate 不仅对普通列表生效;

同时也对卡片、横纵坐标盒子,甚至交换位置的列表项生效

例如如下动画:(来自官方)
在这里插入图片描述
其核心代码与普通使用方法一致

 <div class="boxes" v-auto-animate="{ duration: 500 }">

替换自带的动画

如果对它自带的动画和过度方式不满意,也可以将它替换掉,只需要引入AutoAnimate 方法,并修改其内容重新定义 add、remove、remain的动画帧即可。

import autoAnimate, { getTransitionSizes } from '@formkit/auto-animate'

autoAnimate(parentElement, (el, action, oldCoords, newCoords) => {
  let keyframes
  // supply a different set of keyframes for each action
  if (action === 'add') {
    keyframes = [
      { transform: 'scale(0)', opacity: 0 },
      { transform: 'scale(1.15)', opacity: 1, offset: 0.75 },
      { transform: 'scale(1)', opacity: 1 }
    ]
  }
  if (action === 'remove') {
  	// ...
  }
  if (action === 'remain') {
  	// ...
  }
  return new KeyframeEffect(el, keyframes, { duration: 600, easing: 'ease-out' })
}))

总结

AutoAnimate 实现了一行代码自动添加过渡动画,时间原因未对其原理进行分析,但看其替换默认动画的实现方式,应当在使用 js 根据情况在修改相关元素的属性。

对于快速验证的小应用,尤其涉及到循环列表或者是横纵坐标循环 box 的,甚至交换位置等交互的,这无疑是一个极好的选择。

不仅如此,对于后端人士,不得不写一点前端的时候,希望快速搞一点动效,以免显得生硬,但又对 css 和过渡动画了解没那么深入,这就更是一个不错的选择了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我码玄黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值