Vue3过渡(相比Vue2)
vue3中过渡的 class 名被更改(过渡类名 v-enter 修改为v-enter-from 、过渡类名v-leave 修改为 v-leave-from ),如图:
Vue过渡
Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡
- 条件渲染 (使用 v-if)
- 条件展示 (使用 v-show)
- 动态组件
- 组件根节点
值得注意的是: transition 在对多个元素使用时需要不能使用v-show,只能使用v-if; Vue3情况下transition 外的被切换时将不再触发过渡效果。
使用第三方 CSS动画库
安装
使用命令:
npm install animate.css --save
在main.js中:
import animated from 'animate.css'
App.use(animated)
使用
将需要过渡的元素用transition 包起来:
<transition>
<div v-if="!isButtonBeClicked">
添加关注商品
</div>
<div v-else>
确认添加商品
</div>
</transition>
在transition 中添加class名:
<transition
mode="out-in"
enter-active-class="animate__animated animate__fadeIn"
leave-active-class="animate__animated animate__fadeOut"
>
<div v-if="!isButtonBeClicked">
添加关注商品
</div>
<div v-else>
确认添加商品
</div>
</transition>
解释一下:
- out-in是什么?
看官网解释 - enter-active-class 等是什么?
是 自定义过渡 class 类名 ,可以引用第三方CSS库,分别对应上面的图,详见Vue官网 - animate__animated 是什么?
使用animate.css前要加上这个,如图: - 怎么使用动画效果?
进入animate.css官网,点击所需要的动画效果复制到 自定义过渡 class 类名 中,注意3所诉
完成
动画速度
默认动画效果为2s,比较慢,可以使用CSS调快:
.animate__animated.animate__bounce {
--animate-duration: 0.25s;
}
:root {
--animate-duration: 0.25s;
}
animate.css 调节
补充一下调节
--animate-repeat 是重复次数(number) --animate-delay 是延迟(秒) --animate-duration 是速度(秒)
|