1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<!--
* RequestAnimationFrame 学习
-->
<script setup lang="ts">
import { onMounted } from 'vue';
onMounted(() => {
const element = document.getElementById(
'some-element-you-want-to-animate'
) as HTMLElement;
let translateX = 0;
// 每秒执行30次,则执行1次需要的时间1/30(单位:秒)
function step() {
translateX++;
if (translateX > 30) {
return;
} else {
element.style.transform = 'translateX(' + translateX + 'px)';
element.innerText = String(translateX);
setTimeout(() => {
window.requestAnimationFrame(step);
}, (1 / 30) * 1000);
}
}
window.requestAnimationFrame(step);
});
</script>
<template>
<div>
<div>RequestAnimationFrame</div>
<div id="some-element-you-want-to-animate"></div>
</div>
</template>
<style lang="scss" scoped>
#some-element-you-want-to-animate {
width: 200px;
height: 100px;
background-color: pink;
}
</style>