vue的transition demo(配合create-keyframe-animation使用)

本文介绍了一个使用Vue.js实现的简单动画过渡效果示例。通过点击事件触发元素的显示与隐藏,并利用Vue的transition组件结合自定义动画实现平滑过渡。动画效果包括元素的位置变化及背景颜色变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<template>
<div>
<div class="click" @click="onClick">click</div>
<transition
    @enter="onEnter"
    @after-enter="onAfter"
    @leave="onLeave"
    @after-leave="onAfterLeave"
  >
<div class="box" ref="box" v-show="flag"></div>
</transition>
</div>
</template>

<script>
import animations from 'create-keyframe-animation'

export default {
data() {
return {
flag: false,
}
},
methods: {
onClick() {
this.flag = !this.flag
},
onEnter(e, done) {
animations.registerAnimation({
name: 'move',
animation: {
0: {
transform: 'translateX(0px)'
},
50: {
background: 'red'
},
100: {
transform: 'translateX(200px)'
}
},
presets: {
duration: 1000,
easing: 'linear'
}
})
animations.runAnimation(this.$refs.box, {
name: 'move'
}, done)
},
onAfter() {
animations.unregisterAnimation('move')
this.$refs.box.style.animation=''
},
onLeave(e, done) {
animations.registerAnimation({
name: 'move',
animation: {
0: {
transform: 'translateX(200px)'
},
50: {
background: 'red'
},
100: {
transform: 'translateX(0px)'
}
},
presets: {
duration: 1000,
easing: 'linear'
},
})
animations.runAnimation(this.$refs.box, {
name: 'move'
}, done)
},
onAfterLeave() {
animations.unregisterAnimation('move')
this.$refs.box.style.animation=''
}
}
}
</script>

<style lang="stylus" scoped>
.box
width 100px
height 100px
background black
transform translateX(200px)
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值