状态过渡
2022年4月23日小于 1 分钟
状态过渡
Vue 的过渡系统提供了非常多简单的方法来设置进入、离开和列表的动效,那么对于数据元素本身的动效呢?比如:
- 数字和运算
- 颜色的显示
- SVG 节点的位置
- 元素的大小和其他的 property
这些数据要么本身就以数值形式存储,要么可以转换为数值。有了这些数值后,我们就可以结合 Vue 的响应性和组件系统,使用第三方库来实现切换元素的过渡状态。
状态动画与侦听器
通过侦听器我们能监听到任何数值 property 的更新。可能听起来很抽象,所以让我们先来看看一个使用 GreenSock 的例子:
<template>
<div>
<input v-model.number="number" type="number" step="20" />
<p>{{ animatedNumber }}</p>
</div>
</template>
<script>
export default {
data() {
return {
number: 0,
tweenedNumber: 0
}
},
computed: {
animatedNumber() {
return this.tweenedNumber.toFixed(0)
}
},
watch: {
number(newValue) {
gsap.to(this.$data, { duration: 0.5, tweenedNumber: newValue })
}
}
}
</script>
<style>
</style>
{
"jsLib": [
"https://cdnjs.cloudflare.com/ajax/libs/gsap/3.2.4/gsap.min.js"
]
}