<script> | |
import { onUnmounted, reactive, ref } from 'vue' | |
export default { | |
setup() { | |
const animate = ref(false) | |
const size = reactive({ | |
width: 10, | |
height: 10, | |
}) | |
const timer = setInterval(() => { | |
if (!animate.value) { | |
return | |
} | |
size.width = Math.round(Math.random() * 100) | |
size.height = Math.round(Math.random() * 100) | |
}, 1000) | |
onUnmounted(() => { | |
clearInterval(timer) | |
}) | |
return { | |
size, | |
animate, | |
} | |
}, | |
} | |
</script> | |
<template> | |
<div | |
class="animation" | |
:style="{ | |
width: `${size.width * 10}px`, | |
height: `${size.height * 10}px`, | |
}" | |
@click="animate = !animate" | |
/> | |
</template> | |
<style lang="postcss" scoped> | |
.animation { | |
transition: all 1s linear; | |
background: #42B983; | |
} | |
</style> | |