安装
npm install animate.css --save
在线文档
参考文章
vue项目中 引入
// 全局引入 animate.css 插件
import animate from "animate.css"
Vue.use(animate)
使用注意事项
需要添加动画的元素需要两个类名,
- class=" animate__animated animate__‘自己想要的动画名’ "
基本使用方式
html部分代码:
<button @click="registerAnimateHandle()">激活动画</button>
<transition
enter-active-class="animate__animated animate__flash"
leave-active-class="animate__animated animate__shakeX"
>
<div class="animate_content" v-if="animate">动画组件</div>
</transition>
js部分代码:
data() {
return {
animate: true,
};
},
methods: {
registerAnimateHandle() {
this.animate = !this.animate;
},
},
点击元素产生动画效果
大概思路:
1.让添加动画的元素,点击的时候更换类名;
2.类名必须发生变化的时候才可以产生动画的效果.
3.异步任务可以 让一个元素在不同的类名中 进行改变.
4.将需要添加的动画效果的类名在异步任务中进行添加.
5.参考上面的 文章3
html部分代码:
<div
class="animate_content"
ref="animateDiv"
@click="setAnimateHandle()"
>
动画组件
</div>
js部分代码:
setAnimateHandle() {
//每次点击元素的时候,都将该元素的 class名改为 一个基础的类名
this.$refs.animateDiv.className = "animate_content
animate__animated ";
//需要添加的动画名 必须要异步添加,如果同步添加 class名可能只会发生一次变化,所以只有第一次点击会有动画效果.
setTimeout(() => {
this.$refs.animateDiv.className =
"animate_content animate__animated animate__shakeX";
}, 0);
},
大佬的代码:
<div id="app">
<div :class="['animateDiv', 'animate__animated', animate]" @click="sharkAnimate"></div>
<button type="button" @click="animate = animate === 'animate__fadeInDown' ? 'animate__fadeOutRightBig' : 'animate__fadeInDown'">切换显示</button>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
// message: 'Hello Vue!',
needShow: true,
shark: true,
animate: 'animate__fadeInDown'
},
methods: {
sharkAnimate() {
// this.animate = 'animate__jello'
document.querySelector(".animateDiv").className = "animateDiv animate__animated";
setTimeout(() => {
document.querySelector(".animateDiv").className = "animateDiv animate__animated animate__jello";
}, 0);
}
}
})
</script>