티스토리 뷰

Script Sample/Mouse Effect

mouseEffect05

GYChoi 2022. 2. 24. 13:46

https://garenchoi.github.io/webs_class/javascript/effect/mouseEffect05.html

const circle = document.querySelector(".cursor").getBoundingClientRect(); 	//변수 circle에 클래스 cursor의 정보 값 저장

function mouseMove(e){		//함수 mouseMove 매개변수 e로 선언
    let mousePageX = e.pageX;	//mousePageX에 e의 pageX(X좌표 값)저장
    let mousePageY = e.pageY;	//mousePageY에 e의 pageY(Y좌표 값)저장
    
    //마우스 좌표 기준점을 가운데로 변경
    let centerPageX = window.innerWidth/2 - mousePageX;		//centerPageX에 (브라우저의 가로 값/2 - mousePageX값) 저장
    let centerPageY = window.innerHeight/2 - mousePageY;	//centerPageY에 (브라우저의 세로 값/2 - mousePageY값) 저장

    let maxPageX = Math.max(-800, Math.min(800, centerPageX));		//변수 maxPageX에 centerPageX값(최솟값 -800, 최댓값 800으로) 저장
    let maxPageY = Math.max(-300, Math.min(300, centerPageY));		//변수 maxPageY에 centerPageY값(최솟값 -300, 최댓값 300으로) 저장

    //각도 줄이는 설정					
    let anglePageX = maxPageX * 0.12;		//anglePageX에 maxPageX * 0.12값 저장
    let anglePageY = maxPageY * 0.12;		//anglePageY에 maxPageY * 0.12값 저장

    //부드럽게 설정
    let softPageX = 0; let softPageY = 0;			//변수 softPageX, softPageY 선언
    softPageX += (anglePageX - softPageX) * 0.4;	//softPageX (anglePageX - softPageX) * 0.4 값 추가
    softPageY += (anglePageY - softPageY) * 0.4;	//softPageY (anglePageY - softPageY) * 0.4 값 추가

    //이미지 움직이기
    const imgMove = document.querySelector(".mouse__img");		//변수 imgMove에 클래스 mouse__img 저장
    imgMove.style.transform = `perspective(600px) rotateX(${softPageY}deg) rotateY(${-softPageX}deg)`;		//imgMove에 스타일 transform perspective(600px) rotateX(softPageYdeg) rotateY(-softPageXdeg) 추가

    //원 크기
    let circleWidth = mousePageX-circle.width/2;		//변수 circleWidth에 mousePageX - circle.width/2 값 저장
    let circleHeight = mousePageY-circle.height/2;		//변수 circleHeight에 mousePageY - circle.height/2 값 저장

    //커서
    gsap.to(".cursor", {duration: .3, left: circleWidth, top: circleHeight})	//gsap(자바스크립트 애니메이션 라이브러리)사용, 클래스 cursor에 0.3초 동안 left: circleWidth, top: circleHeight값 할당

    //출력
    document.querySelector(".mousePageX").textContent = mousePageX;		//클래스 mousePageX에 mousePageX 값 출력
    document.querySelector(".mousePageY").textContent = mousePageY;		//클래스 mousePageY에 mousePageY 값 출력
    document.querySelector(".centerPageX").textContent = centerPageX;	//클래스 centerPageX에 centerPageX 값 출력
    document.querySelector(".centerPageY").textContent = centerPageY;	//클래스 centerPageY에 centerPageY 값 출력
    document.querySelector(".maxPageX").textContent = maxPageX;			//클래스 maxPageX에 maxPageX 값 출력
    document.querySelector(".maxPageY").textContent = maxPageY;			//클래스 maxPageY에 maxPageY 값 출력
}

document.addEventListener("mousemove", mouseMove);		//마우스 움직였을 때 함수 mouseMove 실행

'Script Sample > Mouse Effect' 카테고리의 다른 글

mouseEffect07  (0) 2022.04.14
mouseEffect06  (0) 2022.04.14
mouseEffect04  (0) 2022.02.24
mouseEffect03  (0) 2022.02.23
mouseEffect02  (0) 2022.02.23
댓글
© 2018 webstoryboy