GSAP๋ GrennSock์์ ๋ง๋ ย ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋๋ฉ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์นด์นด์คํ์,์นด์นด์คํค์ด๋ฑ๋ฑ)
์ผ๋ฐ์ ์ผ๋ก ์ ๋๋ฉ์ด์
ํจ๊ณผ๋ย CSS๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ย ์ ์ด์ฟผ๋ฆฌ(JQuery)์์ ์ ๊ณตํ๋ .animate()๋ fadeIn(), SlideDown() ๋ฑ์ผ๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
ํ์ง๋ง ๋ ๋ณต์กํ๊ณ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค.
<script src="./js/jquery-1.12.4.min.js"></script> //์ ์ด์ฟผ๋ฆฌ
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.10.4/ScrollTrigger.min.js"></script>
<script src="./js/main.js"></script> //๋ดํ์ผ
์๋ก ์ ์์๋๋ cdn์ ์ฐ๋ฉด ์ข๋ค.
gsap์ฌ์ดํธ -> products -> scrollTrigger ->๋ฐ์ ๋ค์ด๋ก๋๋ฒํผ
ํ๋์ ๋ณผ ์ ์์
์คํฌ๋กค์ ์๋ง์ง์ฐฝ 2๋ฐฐ3๋ฐฐ ์ด๋ฐ์์ผ๋ก ์ฃผ๋ค๋ณด๋ฉด ์ํฌ์๊ฐ ์์์ผ๋ก ์ด๋ฐ ํ๋ฌ๊ทธ์ธ์ ์ฐ๋ฉด ์๋ง์
gsap ScrollTo ๊ฒ์ํ๋ฉด ๋๋ค.

fom ------> ํ์ฌ ------> to
gsap.to ~์ด๋ฒคํธ ์ดํ์ ๊ฐ
gsap.from ~์ด๋ฒคํธ ์ ์ ๊พธ๋ฐ๋
gsap.fromTo ~์ ~ํ ๋๋ค ์
ํ
gsap.to('.ํด๋์ค',{ ์์ฑ })
~์ด๋ฒคํธ ์ดํ์ ๊ฐ
ํ์ฌ ------> to

gsap.to(".box", { x: 200 });
๋ฐ์ค๊ฐ x์ถ์ผ๋ก 200์์ง์ธ๋ค.
์ด๊ฒ์ css๋ก transform: translateX(200px) ๊ณผ ์ ํํ ๊ฐ์ ํจ๊ณผ์ด๋ค.
duration์ ์์ฑํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ธ 0.5์ด๋ก ๋ํ๋๋ค.
~์ด๋ฒคํธ ์ ์ ๊พธ๋ฐ๋
fom ------> ํ์ฌ
์์๊ฐ์ ์ ํ๊ณ ์๋๋๋ก ๋๋์์ค๋ ์ ๋๋ฉ์ด์
์คํ์ ๋จผ์ ์์ผ์ฃผ๊ณ ์๋๋๋ก ๋์๊ฐ๊ธฐ

.box1{ width: 100px; height: 100px; background: orange; }gsap.from(".box1", { duration: 3, x: 500, width: 300, opacity: 0.2, });
x 500px,w 300px, ํฌ๋ช
๋ 0.2์์ ์๋ ์ค์ ํด๋์
w 100px,h 100px๋ก ๋์๊ฐ๋ค.
from ์์ฑ์ด ์์๊ฐ์ผ๋ก ์ธํ
๋๊ณ to ์์ฑ์ด ์ข
๋ฃ๊ฐ
fom ------> ํ์ฌ ------> to

.box2{ width: 200px; height: 100px; background: greenyellow; }gsap.fromTo(".box2",{ fontSize: 40 },{ duration: 3, x: 300, fontSize: 16, backgroundColor: 'blue', });
์คํฌ๋กคํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ณธ
์คํฌ๋กค์ ํด์ ํด๋น ์์๊ฐ ๋ณด์ผ ๋ ์ ๋๋ฉ์ด์ ํจ๊ณผ๊ฐ ๋ํ๋๋๋ก ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.

gsap.to('.box2',{ scrollTrigger:{ trigger:".box2", //๊ธฐ์คํ๊ทธ start:"top 80%", //[ํธ๋ฆฌ๊ฑฐ๊ธฐ์ค, ์๋์ฐ] ๋์ด ๋ง๋์ผ ์คํ end:"bottom top", //[ํธ๋ฆฌ๊ฑฐ๊ธฐ์ค, ์๋์ฐ]๋์ด ๋ง๋์ผ ๋ markers:true, //์ขํํ์ scrub:1, //๋ญ๋๋๊ฑฐ ์์ผ๋ฉด 1ํ์ฑ }, //์ปด๋ง ํ์ yPercent:-10 })


scroller-start์ ์์น๋ฅผ ์กฐ์ ํ๋ค๊ณ ์๊ฐํ๋ฉด๋จscroller-start์์ ์์ scroller-end์์ ๋๋จ์๋ฅผ๋ค์ด, ๋ด๋ ค๊ฐ๋ค ์ฌ๋ผ์ค๋ ์ ๋๋ฉ์ด์ ์ ๊ตฌํํ ๋, delay๋ฅผ ์ค์ ๋ฆ์ถฐ์ ๊ตฌํํ์์ง๋ง
timeline์ ์ฌ์ฉํ๋ค๋ฉด ์ ๋๋ฉ์ด์ ์ ์ ๊ฒน์น๊ฒ ์ฐจ๋ก๋ก ์๋ํ๊ฒ ํด์ค๋ค.
Scrub์ ์คํฌ๋กค์ด ์์ ์ด์ ์ผ๋ก ๋์๊ฐ๋ฉด ์ ๋๋ฉ์ด์ ์ญ์ ๋๋์๊ฐ๋ ๊ธฐ๋ฅ์ ๋งํ๋ค.
์ฆ ์ฌ์ฌ์ฉ์ ํ ์ ์๋ ๊ธฐ๋ฅ
์๊ฐ ๊ฐ๊ฒฉ์ ๋์ด ์ ๋๋ฉ์ด์ ์ ์คํํ๋๋ก ๋์์ค๋ค.
offset().top์ ์ ํํ ์์์ ๋์ด๊ฐ์ ํฝ์
๋จ์๋ก ๋ฐํํ๋ค.
start ์์ ์์ class๊ฐ ์ถ๊ฐ๋๊ณ end์์ class๊ฐ ์ญ์ ๋๋ค.