Skip to content

Commit d15ce9a

Browse files
committed
[LES-3.2/st-compl] animation-by-interval-funcs
Working with "setInterval/clearInterval() func's". Worth noting: - three examples on CodePen. core: B-4 / WL-AL
1 parent b89bce5 commit d15ce9a

File tree

1 file changed

+63
-0
lines changed
  • core-courses/4-web-layout-advanced-level/3-animation-on-js/3-2-animation-by-interval-funcs

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
7+
<title>setInterval & clearInterval() func's</title>
8+
<style>
9+
.block {
10+
width: 100px;
11+
height: 100px;
12+
background-color: lightslategray;
13+
}
14+
</style>
15+
</head>
16+
17+
<body>
18+
<div class="block"></div>
19+
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/gsap.min.js"></script>
20+
<script>
21+
22+
let block = document.querySelector('.block');
23+
let start = Date.now(); // запомнить время начала
24+
25+
let timer = setInterval(function () {
26+
// сколько времени прошло с начала анимации?
27+
let timePassed = Date.now() - start;
28+
29+
if (timePassed >= 2000) {
30+
clearInterval(timer); // закончить анимацию через 2 секунды
31+
return;
32+
}
33+
34+
// отрисовать анимацию на момент timePassed, прошедший с начала анимации
35+
draw(timePassed);
36+
37+
}, 20);
38+
39+
// в то время как timePassed идёт от 0 до 2000
40+
// left изменяет значение от 0px до 400px
41+
function draw(timePassed) {
42+
block.style.transform = `translateX(${timePassed / 5}px)`;
43+
}
44+
// ex 1
45+
// gsap.to(".block", { duration: 1, x: 100 });
46+
47+
// ex 2
48+
// gsap.to(".block", { duration: 1, x: 100, rotation: 360, scale: 0.5 });
49+
50+
// ex 3
51+
// gsap.from(".block", {
52+
// opacity: 0,
53+
// y: 100,
54+
// duration: 1
55+
// });
56+
57+
// ex 4
58+
//gsap.fromTo(".block", {opacity: 0}, {opacity: 0.5, duration: 1});
59+
60+
</script>
61+
</body>
62+
63+
</html>

0 commit comments

Comments
 (0)