动画animate的使用

yarn add animate.css

官网地址

import React, { useEffect } from 'react'
import 'animate.css';
const index = () =>
{

    useEffect(() =>
    {
        document.documentElement.style.setProperty('--animate-duration', '1s');  // 使动画持续时间为 3 s
    }, [])
    // 添加动画类并自动删除它们
    const animateCSS = (element, animation, prefix = 'animate__') =>
        // 我们创建一个 Promise 并返回它
        new Promise((resolve, reject) =>
        {
            const animationName = `${prefix}${animation}`;
            const node = document.querySelector(element);

            node.classList.add(`${prefix}animated`, animationName);

            // 当动画结束时,我们清理类并解析 Promise
            function handleAnimationEnd (event)
            {
                event.stopPropagation();
                node.classList.remove(`${prefix}animated`, animationName);
                resolve('Animation ended');
            }

            node.addEventListener('animationend', handleAnimationEnd, { once: true });
        });
    // 动画消失
    const AnimationDisappears = () => 
    {
        const element = document.querySelector('.my-element');

        element.classList.add('animate__animated', 'animate__bounceOutDown');
        element.addEventListener('animationend', () =>  // animationend 结束动画
        {
            // 当动画结束时做点什么
            console.log('动画消失了');
        });
    }
    // 添加一个动画并且删除
    const AddAnimation = () =>
    {

        animateCSS('.my-element', 'bounce');
        animateCSS('.AddAnimation', 'rotateOut').then((message) =>
        {
            // 在动画之后做一些事情
            console.log(message);
        });

    }
    // 修改指定节点动画时间
    const ModifyDuration = () =>
    {
        const element = document.querySelector('.my-element');
        element.style.setProperty('--animate-duration', '5s');

    }
    return (
        <div style={{ display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100vh' }} >
            <button className="animate__animated animate__bounce my-element animationend" onClick={AnimationDisappears}>动画消失</button>
            <button className="AddAnimation" onClick={AddAnimation}>添加动画并删除</button>
            <button onClick={ModifyDuration}>修改动画持续时间</button>
        </div >
    )
}

export default index

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

臧小川

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

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

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

打赏作者

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

抵扣说明:

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

余额充值