Script Sample/Mouse Effect

Mouse Effect - 이미지 효과2

오이연우오 2022. 3. 10. 16:48
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);

 

마우스 3D 효과 사이트