[๐Ÿ’ป] GSAP

J-silverยท2022๋…„ 9์›” 24์ผ

web-project

๋ชฉ๋ก ๋ณด๊ธฐ
12/18

GSAP

GSAP๋Š” GrennSock์—์„œ ๋งŒ๋“ ย ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์นด์นด์˜คํƒ์‹œ,์นด์นด์˜คํ—ค์–ด๋“ฑ๋“ฑ)

์ผ๋ฐ˜์ ์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋Š”ย CSS๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ย ์ œ์ด์ฟผ๋ฆฌ(JQuery)์—์„œ ์ œ๊ณตํ•˜๋Š” .animate()๋‚˜ fadeIn(), SlideDown() ๋“ฑ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๋” ๋ณต์žกํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ๋‹ค.


๐Ÿ“Œ ์‚ฌ์šฉ๋ฒ•

  1. gsap์„ค์น˜
  2. ๋‚ด ํŽ˜์ด์ง€์— cdn์—ฐ๊ฒฐ (์ œ์ด์ฟผ๋ฆฌ๋ณด๋‹จ ๋ฐ‘์— ๋‚ด ํŒŒ์ผ๋ณด๋‹ค ์œ„์—)

๋” ๋งŽ์€ cdn

<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('.ํด๋ž˜์Šค',{
			์†์„ฑ
		})

๐Ÿ“Œ ์˜ˆ์ œ

GSAP ์˜ˆ์ œ

โ—ผ gsap.to์˜ˆ์ œ

~์ด๋ฒคํŠธ ์ดํ›„์˜ ๊ฐ’
ํ˜„์žฌ ------> to

gsap.to(".box", {
  x: 200
});

๋ฐ•์Šค๊ฐ€ x์ถ•์œผ๋กœ 200์›€์ง์ธ๋‹ค.

์ด๊ฒƒ์€ css๋กœ transform: translateX(200px) ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์€ ํšจ๊ณผ์ด๋‹ค.

duration์€ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์ธ 0.5์ดˆ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค.


โ—ผ gsap.from์˜ˆ์ œ

~์ด๋ฒคํŠธ ์ „์„ ๊พธ๋ฐ€๋•Œ
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๋กœ ๋Œ์•„๊ฐ„๋‹ค.


โ—ผ gsap.fromTo์˜ˆ์ œ

from ์†์„ฑ์ด ์‹œ์ž‘๊ฐ’์œผ๋กœ ์„ธํŒ…๋˜๊ณ  to ์†์„ฑ์ด ์ข…๋ฃŒ๊ฐ’
fom ------> ํ˜„์žฌ ------> to

.box2{
	width: 200px;
	height: 100px; 
	background: greenyellow; 
}
gsap.fromTo(".box2",{
     fontSize: 40
     },{
     duration: 3,
     x: 300,
     fontSize: 16,
     backgroundColor: 'blue',
});

๐Ÿ“Œ scrollTrigger

์Šคํฌ๋กคํŠธ๋ฆฌ๊ฑฐ ๊ธฐ๋ณธ

์Šคํฌ๋กค์„ ํ•ด์„œ ํ•ด๋‹น ์š”์†Œ๊ฐ€ ๋ณด์ผ ๋•Œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๋‹ค.

gsap.to('.box2',{
        scrollTrigger:{
            trigger:".box2", //๊ธฐ์ค€ํƒœ๊ทธ
            start:"top 80%", //[ํŠธ๋ฆฌ๊ฑฐ๊ธฐ์ค€, ์œˆ๋„์šฐ] ๋‘˜์ด ๋งŒ๋‚˜์•ผ ์‹คํ–‰ 
            end:"bottom top", //[ํŠธ๋ฆฌ๊ฑฐ๊ธฐ์ค€, ์œˆ๋„์šฐ]๋‘˜์ด ๋งŒ๋‚˜์•ผ ๋
            markers:true, //์ขŒํ‘œํ‘œ์‹œ
            scrub:1, //๋ญ‰๋Œ€๋Š”๊ฑฐ ์—†์œผ๋ฉด 1ํšŒ์„ฑ
        }, //์ปด๋งˆ ํ•„์ˆ˜
        yPercent:-10
    })

โ—ผ start:"1ํŠธ๋ฆฌ๊ฑฐ๊ธฐ์ค€, 2์œˆ๋„์šฐ"

  1. ํŠธ๋ฆฌ๊ฑฐ์˜ ์‹œ์ž‘๊ณผ ๋

  1. ์œˆ๋„์šฐ ๊ธฐ์ค€์œผ๋กœ ์œ„์น˜ ์ง€์ •
    -> scroller-start์˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด๋จ
    -> ์ง€์ • ์œ„์น˜ scroller-start์—์„œ ์‹œ์ž‘ scroller-end์—์„œ ๋๋‚จ

๐Ÿ“Œtimeline

์˜ˆ๋ฅผ๋“ค์–ด, ๋‚ด๋ ค๊ฐ”๋‹ค ์˜ฌ๋ผ์˜ค๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•  ๋•Œ, delay๋ฅผ ์ค˜์„œ ๋Šฆ์ถฐ์„œ ๊ตฌํ˜„ํ–ˆ์—ˆ์ง€๋งŒ

timeline์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์•ˆ ๊ฒน์น˜๊ฒŒ ์ฐจ๋ก€๋กœ ์ž‘๋™ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.


โ—ผ Scrub (๋˜๊ฐ๊ธฐ)

Scrub์€ ์Šคํฌ๋กค์ด ์š”์†Œ ์ด์ „์œผ๋กœ ๋Œ์•„๊ฐ€๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ์—ญ์‹œ ๋˜๋Œ์•„๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•œ๋‹ค.

์ฆ‰ ์žฌ์‚ฌ์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ


โ—ผ stagger

์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์„ ๋‘์–ด ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‹คํ–‰ํ•˜๋„๋ก ๋„์™€์ค€๋‹ค.


โœ offset().top

offset().top์€ ์„ ํƒํ•œ ์š”์†Œ์˜ ๋†’์ด๊ฐ’์„ ํ”ฝ์…€๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

toggleClass

start ์‹œ์ ์—์„œ class๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  end์—์„œ class๊ฐ€ ์‚ญ์ œ๋œ๋‹ค.

https://velog.io/@yesslkim94/GSAP-ScrollTrigger

profile
๋‹ฌ๋ฆฌ๋Š” ๊ฑฐ๋ถ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€