티스토리 뷰
설명
마치 이미지의 시선이 마우스 포인터를 향하게 3D효과를 내는 것 입니다.
transform-style: preserve-3d를 이용해 효과를 만들어 보았습니다.
transform-style: preserve-3d란?
transform-style: preserve-3d속성 은 요소의 자식이 3D 공간에 배치되는지 또는 요소 평면에서 병합되는지 여부를 설정합니다.
평면화하면 요소의 자식은 3D 공간에서 자체적으로 존재하지 않습니다.
이 속성은 상속되지 않으므로 요소의 모든 비-리프 하위 항목에 대해 설정해야 합니다.
const circle = document.querySelector(".cursor").getBoundingClientRect();
function mouseMove(e) {
//마우스 좌표 값
let mousePageX = e.pageX;
let mousePageY = e.pageY;
//마우스 좌표 기준점을 가운데로 변경
let centerPageX = window.innerWidth / 2 - mousePageX;
let centerPageY = window.innerHeight / 2 - mousePageY;
//최소값은 -50 최대값은 50 설정
let maxPageX = Math.max(-800, Math.min(800, centerPageX));
let maxPageY = Math.max(-300, Math.min(300, centerPageY));
//각도 줄이는 설정
let anlexpageX = maxPageX * 0.12;
let anlexpageY = maxPageY * 0.12;
//부드럽게 설정
let softPageX = 0;
let softPageY = 0;
softPageX += (anlexpageX - softPageX) * 0.4;
softPageY += (anlexpageY - softPageY) * 0.4;
//이미지 움직이기
const imgMove = document.querySelector(".mouse__img");
imgMove.style.transform = "perspective(600px) rotateX(" + softPageY + "deg) rotateY(" + -softPageX + "deg)"
//원 크기
let circleWidth = mousePageX - circle.width / 2;
let circleHeight = mousePageY - circle.height / 2;
//커서
gsap.to(".cursor", {
duration: 0.3,
left: circleWidth,
top: circleHeight
})
//출력
document.querySelector(".mousePageX").textContent = mousePageX;
document.querySelector(".mousePageY").textContent = mousePageY;
document.querySelector(".centerPageX").textContent = centerPageX;
document.querySelector(".centerPageY").textContent = centerPageY;
document.querySelector(".maxPageX").textContent = maxPageX;
document.querySelector(".maxPageY").textContent = maxPageY;
}
document.addEventListener("mousemove", mouseMove)
'Script Sample > Mouse Effect' 카테고리의 다른 글
Mouse Effect - 텍스트 효과2 (0) | 2022.04.14 |
---|---|
Mouse Effect - 텍스트 효과 (0) | 2022.04.14 |
Mouse Effect - 이미지 효과 (0) | 2022.02.24 |
Mouse Effect - 조명 효과 (0) | 2022.02.23 |
Mouse Effect - 따라다니기2 (0) | 2022.02.23 |
댓글
© 2018 webstoryboy