Skip to content

Commit c7e16b9

Browse files
committed
recriação total da animação + extras
1 parent d0537cd commit c7e16b9

File tree

3 files changed

+169
-101
lines changed

3 files changed

+169
-101
lines changed

css/animation.css

Lines changed: 84 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,111 @@
1-
canvas {
2-
width: 100vw;
3-
height: 100vh;
4-
object-fit: cover;
1+
@import './global.css';
2+
3+
/* ------------ SECTION STYLING ------------ */
4+
.section-anim {
5+
width: 100%;
6+
min-height: 100vh;
7+
background: var(--bg-primary);
8+
color: var(--txt-primary);
59
}
610

7-
.anim-text {
8-
position: fixed;
9-
z-index: 2;
10-
color: white;
11+
/* ------------ SCROLL SECTIONS ------------ */
12+
.scroll-section {
13+
width: 100%;
14+
height: calc(100vh - 44px);
15+
position: relative;
16+
overflow: hidden;
17+
}
18+
19+
/* Canvas Element */
20+
.canvas-elem {
1121
width: 100%;
12-
bottom: 40%;
22+
height: 100%;
23+
display: flex;
24+
justify-content: center;
25+
align-items: center;
26+
z-index: 1;
1327
}
1428

15-
.anim-title,
16-
.anim-desc,
17-
.anim-btn {
29+
/* Main & Message Element Positioning */
30+
.msg-elem {
31+
width: max-content;
32+
position: absolute;
33+
top: 44%;
34+
left: 50%;
35+
transform: translate(-50%, -50%);
36+
text-align: center;
37+
z-index: 5;
38+
}
39+
.msg-elem {
40+
transform: translate(-50%, 0%);
41+
opacity: 0;
42+
}
43+
44+
/* SECTION */
45+
.section-anim .canvas-elem canvas {
46+
width: 100%;
47+
}
48+
49+
/* ------------ LAYOUT STYLING ------------ */
50+
51+
/* Message Element */
52+
.msg-elem h2, h3, button {
1853
text-align: center;
19-
54+
color: white;
2055
}
2156

22-
.anim-title {
57+
.msg-elem h2 {
2358
font-size: 70px;
2459
letter-spacing: 10.5px;
2560
font-weight: 700;
61+
font-family: 'Orbitron';
2662
}
2763

28-
.anim-desc {
64+
.msg-elem h3 {
2965
font-size: 24px;
3066
font-weight: 400;
67+
line-height: 34px;
68+
font-style: normal;
69+
font-family: 'Inter';
3170
}
3271

33-
.anim-btn {
72+
/* Button Element */
73+
.msg-elem button {
74+
font-family: 'Orbitron';
3475
cursor: pointer;
3576
position: absolute;
3677
font-size: 16px;
3778
font-weight: 700;
3879
margin-top: 30px;
39-
left: 50%;
4080
transform: translateX(-50%);
81+
align-content: center;
4182
background-color: transparent;
42-
border: 2px solid white;;
83+
border: 2px solid white;
84+
transition: all 0.5s;
85+
}
86+
87+
.msg-elem button:hover {
88+
transform: translateX(-50%) scale(1.1);
89+
color: black;
4390
}
4491

45-
@media screen and (max-width: 1024px) {
46-
.anim-text {
47-
font-size: 2rem;
48-
right: 50%;
49-
bottom: 25%;
50-
transform: translate(50%, 50%);
51-
}
92+
/* Button Animation */
93+
.msg-elem button::before {
94+
content: '';
95+
position: absolute;
96+
top: 0;
97+
left: 0;
98+
width: 100%;
99+
height: 100%;
100+
background-color: white;
101+
z-index: -1;
102+
transform-origin: bottom;
103+
transition-timing-function: cubic-bezier(0.5, 1.6, 0.4, 0.7);
104+
transform: scaleY(0);
105+
transition: all 0.5s;
106+
}
107+
108+
.msg-elem button:hover::before {
109+
transform: scaleY(1);
110+
}
52111

53-
h1 {
54-
font-size: 2rem;
55-
}
56-
}

index.html

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ <h1 class="hero-title">
4848
_Explore novos horizontes!
4949
</h1>
5050

51-
<p class="hero-description">Bem-vindo à revolução das viagens interplanetárias! A revolução das viagens interplanetárias!
51+
<p class="hero-description">Bem-vindo à revolução das viagens interplanetárias! A revolução das
52+
viagens interplanetárias!
5253
</p>
5354
</hgroup>
5455
<button class="outline-button">VOE AO ESPAÇO</button>
@@ -97,13 +98,15 @@ <h1 class="hero-title">
9798
</div>
9899
</div>
99100
</section>
100-
<section class="anim-section">
101-
<div class="anim-text">
102-
<h2 class="anim-title">_UMA EXPERIÊNCIA</h2>
103-
<h3 class="anim-desc">Bem-vindo à revolução das viagens interplanetárias! A revolução das viagens interplanetárias!</h3>
104-
<button class="anim-btn">VOE AO ESPAÇO</button>
101+
<section class="section-anim scroll-section spaceship">
102+
<div class="msg-elem">
103+
<h2>_UMA EXPERIÊNCIA</h2>
104+
<h3>Bem-vindo à revolução das viagens interplanetárias! A revolução das viagens interplanetárias!</h3>
105+
<button>VOE AO ESPAÇO</button>
106+
</div>
107+
<div class="canvas-elem">
108+
<canvas id="spaceship"></canvas>
105109
</div>
106-
<canvas class="canvas"></canvas>
107110
</section>
108111

109112
<section id="introduction-section">
@@ -132,14 +135,15 @@ <h1 class="title-introduction-section">Reserve Sua Viagem Espacial Agora!</h1>
132135
<article>
133136
<hgroup>
134137
<h1>Sobre Nós</h1>
135-
<p class="intro-font">Somos a <span>Orbit Trips</span>, apaixonados pela exploração espacial. </p>
138+
<p class="intro-font">Somos a <span>Orbit Trips</span>, apaixonados pela exploração espacial.
139+
</p>
136140
</hgroup>
137141
<hr>
138142
<p>Nossa missão é tornar o
139143
espaço acessível a todos. <wbr />Com tecnologia de ponta e segurança de primeira linha, oferecemos
140144
aventuras inesquecíveis. Junte-se a nós na jornada estelar.
141145
</p>
142-
</article>
146+
</article>
143147
</div>
144148
<div class="img">
145149
<img src="./imgs/rocket_01.png" alt="Imagem de um foguete">
@@ -170,7 +174,7 @@ <h3>Pacote de viagem: <span>"Aventura na Lua"</span></h3>
170174
</ul>
171175
</div>
172176
<div class="description">
173-
177+
174178
<p>Explore a maravilha lunar como nunca antes! Nosso pacote "Aventura na Lua" oferece
175179
uma experiência incomparável, com passeios emocionantes pela superfície lunar,
176180
vistas deslumbrantes da Terra e a oportunidade de deixar sua pegada na história.
@@ -204,7 +208,7 @@ <h3>Pacote de viagem: <span>"Sistema Solar"</span></h3>
204208
</ul>
205209
</div>
206210
<div class="description">
207-
211+
208212
<p>Prepare-se para a aventura mais épica da sua vida com nosso pacote "Além do Sistema
209213
Solar". Explore os mundos distantes do sistema solar, incluindo planetas, luas e
210214
asteroides. Esta é a viagem que todos os verdadeiros exploradores espaciais sonham
@@ -238,7 +242,7 @@ <h3>Pacote de viagem: <span>"Órbita Estelar"</span></h3>
238242
</ul>
239243
</div>
240244
<div class="description">
241-
245+
242246
<p>Desafie a gravidade e entre em órbita terrestre com nosso pacote "Órbita Estelar".
243247
Experimente vistas panorâmicas incomparáveis da Terra, flutue livremente no espaço e
244248
testemunhe o nascer e o pôr do sol a cada 90 minutos. Esta é uma jornada única que o
@@ -263,7 +267,7 @@ <h2 class="title-rocket">O Foguete <span>Infinity Soarer</span></h2>
263267
<div class="wrapper-dedscription-rocket">
264268
<p class="description-rocket">Nossas Viagens Espaciais são impulsionadas por tecnologia de ponta e
265269
inovação, e nosso foguete reutilizável é a peça central de nossas incríveis aventuras.</p>
266-
<hr>
270+
<hr>
267271
<p class="description-rocket">Projetado para levar você ao espaço com segurança e eficiência, nosso
268272
foguete representa o futuro da exploração espacial.</p>
269273
</div>
@@ -339,17 +343,18 @@ <h3>Se inscreva</h3>
339343
</script>
340344

341345

342-
<!-- GSAP -->
343-
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/gsap.min.js"
344-
integrity="sha512-VEBjfxWUOyzl0bAwh4gdLEaQyDYPvLrZql3pw1ifgb6fhEvZl9iDDehwHZ+dsMzA0Jfww8Xt7COSZuJ/slxc4Q=="
345-
crossorigin="anonymous" referrerpolicy="no-referrer">
346-
</script>
347-
<!-- ScrollTrigger -->
348-
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/ScrollTrigger.min.js"
349-
integrity="sha512-v8B8T8l8JiiJRGomPd2k+bPS98RWBLGChFMJbK1hmHiDHYq0EjdQl20LyWeIs+MGRLTWBycJGEGAjKkEtd7w5Q=="
350-
crossorigin="anonymous" referrerpolicy="no-referrer">
351-
</script>
352-
<script src="./js/animateOnScroll.js"></script>
346+
<!-- GSAP CDN -->
347+
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/gsap.min.js"></script>
348+
349+
350+
<!-- ScrollMagic CDN -->
351+
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/ScrollMagic.min.js"></script>
352+
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/debug.addIndicators.min.js"></script>
353+
<script src="https://cdnjs.cloudflare.com/ajax/libs/ScrollMagic/2.0.7/plugins/animation.gsap.min.js"></script>
354+
</script>
355+
356+
357+
<!-- JS Files -->
353358
<script src="./js/app.js"></script>
354359
</body>
355360

js/app.js

Lines changed: 56 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,69 @@
1-
const canvas = document.querySelector(".canvas");
2-
canvas.width = window.innerWidth;
3-
canvas.height = window.innerHeight;
1+
const section2 = document.querySelector(".section-anim");
2+
const msgText = section2.querySelector(".msg-elem");
3+
4+
const canvas2 = document.getElementById("spaceship");
5+
const context2 = canvas2.getContext("2d");
46
document.documentElement.style.overflowX = 'hidden';
7+
canvas2.width = 1458;
8+
canvas2.height = 820;
59

6-
const context = canvas.getContext("2d");
7-
const frameCount = 158;
10+
/* ScrollMagic Controller */
11+
let controller = new ScrollMagic.Controller();
812

9-
const currentFrame = (index) => `./img/spaceship-frames/spaceship_anim_${index.toString().padStart(3, "0")}.jpg`;
13+
const images2 = [];
14+
const headturn = {
15+
frame: 0,
16+
};
17+
const frameCount2 = 158;
1018

11-
const images = [];
12-
let ball = { frame: 0 };
19+
// Populating images
20+
const currentFrame2 = (index) => `./img/spaceship-frames/spaceship_anim_${index.toString().padStart(3, "0")}.jpg`;
1321

14-
for (let i = 0; i < frameCount; i++) {
22+
for (let i = 0; i < frameCount2; i++) {
1523
const img = new Image();
16-
img.src = currentFrame(i);
17-
console.log(currentFrame(i));
18-
images.push(img);
24+
img.src = currentFrame2(i);
25+
images2.push(img);
1926
}
2027

21-
gsap.to(ball, {
22-
frame: frameCount - 1,
23-
snap: "frame",
24-
ease: "none",
25-
scrollTrigger: {
26-
scrub: 0.5,
27-
pin: "canvas",
28-
end: "500%",
29-
},
30-
onUpdate: render,
31-
});
32-
33-
gsap.fromTo(
34-
".anim-text",
35-
{
36-
opacity: 0,
37-
},
38-
{
39-
opacity: 1,
40-
scrollTrigger: {
41-
scrub: 1,
42-
43-
start: "30%",
44-
end: "0.0001%",
45-
},
46-
47-
onComplete: () => {
48-
gsap.to(".anim-text", { opacity: 0 });
28+
// GSAP Timeline #2
29+
let tl2 = gsap.timeline();
30+
tl2
31+
.add("start0")
32+
33+
/* Main Text Animation */
34+
.to(msgText, { delay: 1, duration: 3.5, opacity: 1}, "start0")
35+
.to(msgText, { duration: 3.5, opacity: 0})
36+
37+
/* BG 'Image Change' Animation */
38+
.to(
39+
headturn,
40+
{
41+
duration: 9,
42+
frame: frameCount2 - 1,
43+
snap: "frame",
44+
ease: "none",
45+
onUpdate: render2,
4946
},
50-
}
51-
);
47+
"start0"
48+
);
5249

53-
images[0].onload = render;
50+
// ScrollMagic Scene #2
51+
let scene2 = new ScrollMagic.Scene({
52+
triggerElement: ".section-anim",
53+
duration: "4000",
54+
triggerHook: 0,
55+
// offset: "100",
56+
})
57+
.setTween(tl2)
58+
.setPin(".section-anim")
59+
.addTo(controller);
5460

55-
function render() {
56-
context.canvas.width = images[0].width;
57-
context.canvas.height = images[0].height;
61+
// Initial image loading
62+
images2[0].onload = render2;
5863

59-
context.clearRect(0, 0, canvas.width, canvas.height);
60-
context.drawImage(images[ball.frame], 0, 0);
64+
// Rendering image on canvas
65+
function render2() {
66+
context2.clearRect(0, 0, canvas2.width, canvas2.height);
67+
context2.drawImage(images2[headturn.frame], 0, 0);
6168
}
69+

0 commit comments

Comments
 (0)