Vue使用Animate.css

news/2025/1/16 0:05:56/

说一下Animate.css这个动画库,很多的动画在这个库里面都定义好了,我们用的时候可以直接使用里面的类名就可以了,就是直接目标元素绑定对应的类名就可以实现动画效果,非常方便,库其实也相对简单,使用起来也简单。这里示例就以v3为例了,v2也是一样的

github:https://github.com/animate-css/animate.css 

官网:https://animate.style/ 

首先安装

pnpm add animate.css

引入 

main.js 

import 'animate.css'

使用

接下来就可以正常使用了 

注意:在添加类名的时候,里面所有的动画必须先设置上 animate__animated ,然后再设置对应动画的类名,否则是不会生效的,大家简单看一下源码就能了解

下面是个示例: 

 

接下来代码: 

<template><div class="main"><label for=""><span style="fontSize: 13px;margin-right: 5px;">开启无限轮询</span></label><input v-model="isInfinite" type="checkbox"><div class="animates-container"><button v-for="animateName in animateNames1" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames2" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames3" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames4" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames5" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames6" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames7" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames8" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames9" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="animates-container"><button v-for="animateName in animateNames10" :key="animateName" @click="setAnimate(animateName)">{{ animateName }}</button></div><div class="testAnimate" :class="[`${animationsClass()}`, { 'animate__infinite': isInfinite }]"></div></div>
</template>
<script setup>
import { ref } from 'vue'
let animateNames1 = ['bounce','flash','pulse','rubberBand','shakeX','shakeY','headShake','swing','tada','wobble','jello','heartBeat',
]
let animateNames2 = ['backInDown','backInLeft','backInRight','backInUp','backOutDown','backOutLeft','backOutRight','backOutUp'
]
let animateNames3 = ['bounceIn','bounceInDown','bounceInLeft','bounceInRight','bounceInUp','bounceOut','bounceOutDown','bounceOutLeft','bounceOutRight','bounceOutUp',
]
let animateNames4 = ['fadeIn','fadeInDown','fadeInDownBig','fadeInLeft','fadeInLeftBig','fadeInRight','fadeInRightBig','fadeInUp','fadeInUpBig','fadeInTopLeft','fadeInTopRight','fadeInBottomLeft','fadeInBottomRight','fadeOut','fadeOutDown','fadeOutDownBig','fadeOutLeft','fadeOutLeftBig','fadeOutRight','fadeOutRightBig','fadeOutUp','fadeOutUpBig','fadeOutTopLeft','fadeOutTopRight','fadeOutBottomRight','fadeOutBottomLeft'
]
let animateNames5 = ref(['flip','flipInX','flipInY','flipOutX','flipOutY'
])
let animateNames6 = ref(['lightSpeedInRight','lightSpeedInLeft','lightSpeedOutRight','lightSpeedOutLeft'
])
let animateNames7 = ref(['rotateIn','rotateInDownLeft','rotateInDownRight','rotateInUpLeft','rotateInUpRight','rotateOut','rotateOutDownLeft','rotateOutDownRight','rotateOutUpLeft','rotateOutUpRight'
])
let animateNames8 = ref(['hinge','jackInTheBox','rollIn','rollOut'
])
let animateNames9 = ref(['zoomIn','zoomInDown','zoomInLeft','zoomInRight','zoomInUp','zoomOut','zoomOutDown','zoomOutLeft','zoomOutRight','zoomOutUp'
])
let animateNames10 = ref(['slideInDown','slideInLeft','slideInRight','slideInUp','slideOutDown','slideOutLeft','slideOutRight','slideOutUp'
])let animates = ref([])
let isInfinite = ref(false)const setAnimate = animateName => {animates.value.shift()animates.value.push(animateName)
}const animationsClass = () => {if (animates.value.length) {return `animate__animated animate__${animates.value[0]}`}return ''
}
</script>
<style scoped>
.main {width: 100%;height: 100%;padding: 40px 0 0 50px;box-sizing: border-box;overflow: hidden;
}
.main button {margin-right: 8px;cursor: pointer;
}.animates-container {margin: 20px 0;
}.main .testAnimate {width: 300px;height: 300px;background-color: red;margin: 50px 0 0 10px;padding: 30px;box-sizing: border-box;
}
</style>

http://www.ppmy.cn/news/1053543.html

相关文章

grpc整合Springboot

一、grpc的依赖 <dependencies><dependency><groupId>net.devh</groupId><artifactId>grpc-server-spring-boot-starter</artifactId><version>2.9.0.RELEASE</version></dependency></dependencies><build>…

如何搭建Appium工具环境

1、安装Java Development Kit&#xff08;JDK&#xff09; 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本&#xff0c;并根据指示下载安装程序。 安装JDK。运行下载的安装…

nginx-location正则

一 Nginx的location语法 location [||*|^~] /uri/ { … } 严格匹配。如果请求匹配这个location&#xff0c;那么将停止搜索并立即处理此请求~ 区分大小写匹配(可用正则表达式)~* 不区分大小写匹配(可用正则表达式)!~ 区分大小写不匹配!~* 不区分大小写不匹配^~ 如果把这个前缀…

u盘数据丢失但占内存如何恢复?不要着急,这里有拯救方案

U盘数据丢失但占内存如何恢复&#xff1f;数据丢失是一种让人非常头疼的问题&#xff0c;尤其是当我们的U盘数据丢失了&#xff0c;但内存仍然被占用时&#xff0c;更令人困惑和焦虑。然而&#xff0c;不要慌张&#xff01;在本文中&#xff0c;将为大家介绍一些有效的方法来恢…

关于python如何使用sqlalchemy连接sap_hana数据库

1.先安装sqlalchemy pip install sqlalchemy 2.from sqlalchemy import create_engine 3.创建数据库连接方式&#xff1a; 假设数据连接方式如下&#xff1a; usernameH_TEOPT passwordww122222 jdbcUrljdbc:sap://192.163.1.161:21681/?currentschema 那么使用sqlalchemy 的…

JDBC查数据

目录 BaseDao UserDao impl 项目目录 BaseDao package com.hz.dao;import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java…

模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)

模型预测 一、导入关键包二、如何载入、分析和保存文件三、修改缺失值3.1 查看缺失值3.1 众数3.2 平均值3.3 中位数3.4 0填充3.5 KNN填充 四、修改异常值4.1 删除4.2 替换4.3 3σ原则4.4 箱型图 五、数据绘图分析5.1 饼状图5.1.1 绘制某一特征的数值情况&#xff08;二分类&…

TCP滑动窗口

为什么会有滑动窗口 在计算机网络中&#xff0c;数据通常被分成小块&#xff08;也叫数据段&#xff09;在网络中传输&#xff08;为什么会被分成小块&#xff0c;请了解拥塞窗口和流量控制&#xff09;。这些小块可能会在传输的过程中遇到延迟、丢失或乱序等问题。为了保证数据…