gsap tools
-tweenlite
-tweenmax
-timelinelite
-timelinemax
-plugins
tweenlite
cdn
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenLite.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/plugins/CSSPlugin.min.js"></script>
*autoAlpha:0 === opacity: 0; + visibility: hidden;
tweenlite의 basic method 4가지
1. to // 이 vars안에 들어가는거는 내가 주고싶은 효과를 작성하면 됨
TweenLite.to(square1, 5,
{ backgroundColor: '#ffea00',
y: 200,
autoAlpha: 0,
delay: 3 });
=> square1이라는 변수가 5초간 애니메이션이 들어가는데
그 애니메이션효과가 배경색이 #ffea00으로 바뀌고
세로로 200픽셀 이동하면서 투명하게 사라지는 효과이고 3초후에 이 애니메이션이 실행된다
2. set // duration없이 처음부터 효과를 주고 시작하는것
3. from // to의 반대, 위의 코드를 예로 들면 박스가 세로 200px에서 제자리로 돌아오는거
4. fromTo // 시작, 끝을 정해놓고 애니메이션 효과주는거
TweenLite.fromTo(square1, 5,
{ backgroundColor: '#ffea00',
y: -200,
autoAlpha: 0 }, //시작
{ backgroundColor: '#ff1493',
y: 0,
autoAlpha: 1 }); //끝
=>200픽셀위에서 박스가 떨어짐
vars 속성
1. ease //효과 ex)파워
2. onStart //애니메이션 시작하기전에 뭔가를 작동시키고싶을때 변수에 담아두고 불러주면됨 onComplete도있음
3. dynamic values // 세로값을 랜덤하게 줄수있음
y: function(){
return Math.random() * 300; },
ease: Power2.easeIn
});
tweenmax
cdn
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
트윈맥스는 트윈라이트보다 13개의 추가 메소드가 있지만 3가지 소개
1. staggerTo // to랑 비슷한데 엘리먼트 개별로 딜레이 줄수있다
TweenMax.staggerTo(squares, 1,
{backgroundColor: '#ffea00',
y: 150,
ease: Power2.easeIn,
stagger: 0.5});
박스마다 1초씩 애니메이션효과가 들어가는데 0.5초 간격을 두고 작동하기때문에
총 4개의 박스가 있으니 약 5초정도 작동하는것
2. staggerFrom //staggerTo의 반대
3. staggerFromTo //마찬가지
속성
1. repeat
repeat: -1 주면 무한반복, 횟수지정가능
2. yoyo
yoyo: true 주면 요요처럼 왔다갔다함
3. cycle
반복하고싶은 효과를 지정해줄수있음
cycle: { backgroundColor: ['#ffea00, '#ff1493'], y: [-100, 100] }
timelinelite
cdn은 tweenlite + cssplugin or tweenmax 사용
=개별엘리먼트 시간차두고 효과줄때 사용
지금처럼 간단한경우에는 잘 모르지만 효과가 복잡해질경우 timeline을 안쓰면 어려워짐
const tl = new TimelineLite();
tl.to(square1, 1, {y: -130, backgroundColor: '#ffea00'});
tl.to(square3, 1, {y: 130, backgroundColor: '#ff1493'});
tl.to(square1, 1, {x: 240});
tl.to(square3, 1, {x: -240});
tl.to(square1, 1, {y: 0});
tl.to(square3, 1, {y: 0});
scrolltrigger plugins
1. 해당 요소가 화면에 보이는 지점에서 애니메이션 시작하게 하는거
gsap.to('.box2', {scrollTrigger: ".box2", x: 400, duration: 2 })
= box2요소가 화면에 보일때 x축으로 400픽셀 2초간 이동
2. 일회성이 아니라 스크롤 올렸다 내렸다 할때 효과 넣으려면
toggleActions추가 ex) toggleActions: "resume pause reset pause"
onEnter, onLeave, onEnterBack, onLeaveBack 네가지로 구성되는데
스크롤과 요소의 위치에 따라서 네가지 액션이 실행됨
3. 시작/종료 지점 선택
디폴트값은 화면의 하단과 요소의 상단부분이 보일때,
이 지점을 바꾸려면 start 메서드 추가
이 메서드 인디케이터를 화면에서 보이게 하려면 markers: true하면 나타남
start, end, scroller-start, scroller-end 이렇게 나오는데
start: 'top center' 추가했다고 치면
인디케이터로 보면 top은 start 자리를 나타내고
center는 scroller-start의 자리를 나타내는걸 알수있음
end: '+=500' 을 예시로 들면
애니메이션을 시작지점에서 500px스크롤된 다음 종료하라는 말
4. scrub 되감기
스크롤이 요소 이전으로 돌아가면 애니메이션효과 역시 되돌아가는 기능
scrub: true or scrub: 3(수치를 넣으면 부드러워짐)
5. pinning 화면고정
pin: true or pin: "요소의 id/class"
원페이지 스크롤에 많이쓰임
아니면 플러그인안써도
쿼리셀렉터로 요소선택하고 이벤트리스너달아서 동작시키면 됨
아니면 스크롤매직이라고 외부라이브러리 사용
이 동작원리는 컨트롤러 > 오브젝트 씬 > 애니메이션 오브젝트 이렇게 되어있음
애니메이션 오브젝트를 씬에 추가해야함 => setTween()메서드 사용
그리고 이 씬을 컨트롤러에 추가 => addTo()메서드 사용
그리고 이 씬이 일어날 트리거 지정
triggerElement: "#trigger1" 하면 trigger1이라는 요소에 닿으면 애니메이션 발생
'코딩 > 자바스크립트' 카테고리의 다른 글
JS / getPropertyValue로 css 속성 컨트롤 (0) | 2022.06.30 |
---|---|
GSAP JS 애니메이션 극대화하기 (0) | 2022.06.17 |
JS / ES6, ES11 (0) | 2022.06.06 |
three.js / 3D Model 추가해보자 (0) | 2022.06.03 |
canvas / 자바스크립트로 화려한 인터렉션 구현 (0) | 2022.06.03 |