The GreenSock Animation Platform (줄여서 GSAP)는 프론트엔드 개발자와 디자이너들이 쉽게 사용할 수 있는 아주 강력한 타임라인기반의 애니메이션 자바스크립트 라이브러리 이다.
GSAP는 애니메이션 시퀀스에 관련해서 CSS의 keyframe과 animation 보다 더 정밀한 컨트롤을 할 수 있다고 한다.
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.4/ScrollTrigger.min.js"></script>
gsap.to(".box",{
x:200
});
ex) .box를 x축으로 +200 이동시키기
gsap.from(".box",{
x:200
});
ex) .box를 x축 200에서 0으로 이동
gsap.from(".box",{
x:200
},{
y:100
});
ex) .box를 x축 +200에서 y축 +100으로 이동
-- timeline을 사용하여 여러 대상을 순차적으로 동작을 부여함
const motion1 = gsap.timeline({
defaults:{
duration:1,
},
paused:true,
})
motion1
.to('.box1',{ //실행 순서 1번
x:100,
})
.to('.box2',{ //실행 순서 2번
x:100,
})
.addLabel('a') //라벨을 부여해서 여러개를 동시에 실행할수 있음
.to('.box3',{ //실행 순서 4번
x:100,
},'a')
.to('.box4',{ //실행 순서 3번
x:100,
},'a-=0.1') //라벨 붙인것중에서도 먼저 실행하고 싶은 경우
.to('.box5',{ //실행 순서 4번
x:100,
},'a')
.to('body',{ //실행 순서 4번
background:'#00f'
},'a')
$('.btn1').click(function(){
motion1.play()
})
$('.btn2').click(function(){
motion1.pause()
})
$('.btn3').click(function(){
motion1.restart()
})
$('.btn4').click(function(){
motion1.reverse()
})
$('.btn5').click(function(){
motion1.resume()
})
const motion1 = gsap.timeline({
scrollTrigger:{ //스크롤트리거
trigger:".box3", // 트리거는 .box3기준
start:"0% 50%", //.box3기준, 윈도우 기준 만나면 실행
end:"100% 70%", //.box3기준, 윈도우 기준 만나면 종료
markers:true, //표시자.
scrub:1,//되감기(애니메이션 재사용 기능)
},
})
motion1
.addLabel('a')
.to('.box3 h1',{
xPercent:100,
scale:2,
rotation:360
},'a')
.to('.box3',{
background:'#f00'
},'a')
boxList = document.querySelectorAll('.box');
boxList.forEach(element => {
gsap.to(element.children,{
scrollTrigger:{
trigger:element,
start:"0% 0%",
end:"100% 0%",
markers:true,
scrub:1,
},
xPercent:100,
scale:2,
rotation:360
})
});
$('.box').each(function(i,e){
color = $(this).find('h1').data('color');
gsap.to($(this).find('h1'),{
scrollTrigger:{
trigger:e,
start:"0% 0%",
end:"100% 0%",
markers:true,
scrub:1,
},
xPercent:100,
scale:2,
rotation:360,
color:color
})
})