@keyframes fadeInUp {
0% {
opacity: 0;
transform: translateY(20px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
.sc-main h2{
font-family: 'silk';
font-size: 22vw;
line-height: 18vw;
animation: fadeInUp 1s linear;
}
※ 애니메이션을 처음으로 줬을 당시 끊기는 느낌이 있었는데 그 이유가 gsap이 들어가는 부분에 애니메이션을 줬기 때문이었다. 그렇기 때문에 @keyframes을 통한 애니메이션을 줄 경우에는 반드시 부모에게 애니메이션을 줘야한다.
💚 마우스를 따라 원 움직이게 하기
// jquery
$('.sc-video .mouse-pos').mousemove(function(e){
x = (e.offsetX - (window.innerWidth/2))/10; -> 2를 나누는 이유는
윈도우 절반을 줘야 중앙으로 좌표가 잡히기 때문이다.
y = (e.offsetY - (window.innerHeight/2))/10;
gsap.to('.sc-video .group-video',{
x:x,
y:y
})
})
offsetX, offsetY: 좌표를 출력하도록 하는 이벤트가 걸려있는 DOM를 기준으로 좌표를 표시한다. 위에 코드처럼 '.sc-video .mouse-pos'에 offset을 넣었다면 기준은 '.sc-video .mouse-pos'이 될 것이다.
clientX, clientY: 브라우저에서 사용자에게 웹페이지가 보여지는 영역을 기준으로 좌표를 표시하는 것을 말한다. 따라서, 스크롤바가 움직이더라도, 특정 지점의 값은 동일하다.
pageX, pageY: 전체 문서를 기준으로 한 좌표를 표시합니다.
screenX, screenY: 사용자 모니터 화면을 기준으로 한 좌표를 표시합니다.
💚 글씨와 이미지가 동시에 애니메이션 되게 하기
gsap.utils.toArray('.hori-text').forEach(element => {
var xVal = element.dataset.x;
var childEl = element.children[1].children[0];
horimotion = gsap.timeline({
scrollTrigger: {
trigger: '.sc-text',
start: "0% 50%",
scrub:1,
},
})
horimotion
.addLabel('a')
.to(element, { xPercent:xVal },'a')
.to(childEl, { scale:1.8, },'a')
});
💚 마우스커서 커스텀
// css
.cursor{
position: fixed;
top: 0;left: 0;
width: 5px;height: 5px;
background: #fff;
mix-blend-mode: difference;
border-radius: 50%;
z-index: 99;
}
.cursor.point{
width: 10px;
height: 10px;
filter: blur(0)!important;
}