티스토리 뷰
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;
//X: 최솟값은 -800 최댓값은 800, Y: 최솟값은 -300, 최댓값은 300
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,
softPageY = 0;
softPageX += (anlexpageX - softPageX) * 0.4;
softPageY += (anlexpageY - softPageY) * 0.4;
//부드럽게 설정 10-->30
// let softPageX = 0,
// softPageY = 0;
// softPageX = anlexpageX * 0.4;
// softPageY = anlexpageY * 0.4;
//div.cursor가 이동할 좌표 구하기(div.cursor가 마우스 좌표값 정 가운데에 오도록)
let circleWidth = mousePageX - circle.width / 2;
let circleHeight = mousePageY - circle.height / 2;
//이미지움직이기
//transform: rotateX(0deg) rotateY(0deg);
//.mouse__img의 transform을 바꿈 rotate값에 커서값을 반영.
const imgMove = document.querySelector(".mouse__img");
imgMove.style.transform = "perspective(600px) rotateX(" + softPageY + "deg) rotateY(" + -softPageX +
"deg)"; //속성값에 ;들어가면 안됨
//커서의 움직임을 부드럽게 해준다.
gsap.to(".cursor", {
duration: .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.addEventListener("mousemove", mouseMove);
'Script Sample > Mouse Effect' 카테고리의 다른 글
Mouse Effect - 이미지 오버 효과 (0) | 2022.04.14 |
---|---|
Mouse Effect - 텍스트 효과 (0) | 2022.04.14 |
Mouse Effect - 이미지 효과 (0) | 2022.03.08 |
Mouse Effect - 조명 효과 (0) | 2022.02.23 |
Mouse Effect - 따라가기(2) (0) | 2022.02.23 |
댓글
© 2018 webstoryboy