Post

GSAP) GSAP로 마우스 효과 주기2

오늘은 GSAP를 사용하여 웹 페이지에서 마우스 움직임에 따라 다양한 이벤트를 처리하는 JavaScript 예제를 배워보도록 하겠습니다.
코드는 크게 두 부분으로 나뉩니다:
마우스 이동 이벤트를 기록하고 출력하는 부분과, 커스텀 마우스 커서의 모양을 변경하는 부분입니다. 이 코드를 통해 웹 페이지에서 마우스의 움직임과 위치에 따라 동적인 상호작용을 구현할 수 있으며, 특정 요소 위에 마우스가 위치할 때 커서의 모양을 변경하여 사용자 경험을 향상시킬 수 있습니다.


먼저 전체 코드를 보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
    <script>
        // info
        window.addEventListener("mousemove", function (event) {
            console.log(event);
            document.querySelector(".clientX").innerText = event.clientX;
            document.querySelector(".offsetX").innerText = event.offsetX;
            document.querySelector(".pageX").innerText = event.pageX;
            document.querySelector(".screenX").innerText = event.screenX;
        });

        // mouse
        const cursor = document.querySelector(".cursor");

        window.addEventListener("mousemove", function (e) {
            cursor.style.left = e.clientX - 50 + "px";
            cursor.style.top = e.clientY - 50 + "px";
        });

        document.querySelector(".main__inner p span:nth-child(1)").addEventListener("mouseover", function () {
            cursor.classList.add("span1");
        });
        document.querySelector(".main__inner p span:nth-child(1)").addEventListener("mouseout", function () {
            cursor.classList.remove("span1");
        });

        document.querySelector(".main__inner p span:nth-child(2)").addEventListener("mouseover", function () {
            cursor.classList.add("span2");
        });
        document.querySelector(".main__inner p span:nth-child(2)").addEventListener("mouseout", function () {
            cursor.classList.remove("span2");
        });

        document.querySelector(".main__inner p span:nth-child(3)").addEventListener("mouseover", function () {
            cursor.classList.add("span3");
        });
        document.querySelector(".main__inner p span:nth-child(3)").addEventListener("mouseout", function () {
            cursor.classList.remove("span3");
        });

        document.querySelector(".main__inner p span:nth-child(4)").addEventListener("mouseover", function () {
            cursor.classList.add("span4");
        });
        document.querySelector(".main__inner p span:nth-child(4)").addEventListener("mouseout", function () {
            cursor.classList.remove("span4");
        });
    </script>

01. 마우스 이동 이벤트 기록 및 출력

1
window.addEventListener("mousemove", function (event) {...});:

이 부분은 마우스가 움직일 때마다 이벤트 리스너를 호출합니다. 여기서 event 객체는 마우스 이벤트에 대한 정보를 담고 있습니다.


1
console.log(event);:

마우스 이벤트 객체를 콘솔에 출력합니다. 이를 통해 개발자는 이벤트 객체 내의 다양한 프로퍼티를 확인할 수 있습니다.


1
document.querySelector(".clientX").innerText = event.clientX; :

clientX, offsetX, pageX, screenX와 같은 마우스 위치 관련 프로퍼티들의 값을 선택한 HTML 요소의 텍스트로 설정합니다. 이를 통해 마우스의 다양한 위치 값을 실시간으로 화면에 표시할 수 있습니다.


02. 커스텀 마우스 커서 모양 변경

1
const cursor = document.querySelector(".cursor");:

CSS 클래스가 cursor인 요소를 선택하여 cursor 변수에 할당합니다. 이 요소는 사용자 정의 마우스 커서로 사용됩니다.


1
마우스 이동 이벤트 리스너 내에서 cursor.style.left = e.clientX - 50 + "px"; cursor.style.top = e.clientY - 50 + "px";

를 통해 커서의 위치를 마우스 위치에 따라 조정합니다. 여기서 - 50은 커서 이미지의 중심을 마우스 포인터 위치로 맞추기 위한 값입니다.


1
document.querySelector(".main__inner p span:nth-child(n)").addEventListener("mouseover", ...);:

이 코드는 main__inner 클래스를 가진 요소 내의 p 태그 안에 있는 span 요소 중 n번째 요소에 마우스가 올라갔을 때 이벤트 리스너를 추가합니다. mouseover 이벤트는 마우스가 요소 위로 올라갔을 때 발생합니다.


1
cursor.classList.add("span1"); :

마우스가 특정 span 요소 위로 올라가면, 해당 span 요소에 해당하는 클래스 (span1, span2, span3, span4)를 cursor 요소의 클래스 리스트에 추가합니다. 이를 통해 CSS를 사용하여 각각의 상황에 맞는 커서 모양을 지정할 수 있습니다.


1
addEventListener("mouseout", ...);

는 mouseover와 반대로 마우스가 요소에서 벗어났을 때 발생하는 이벤트를 처리하며, 이때 classList.remove(…);를 통해 추가했던 클래스를 제거하여 원래의 커서 모양으로 돌아갑니다.

이 코드를 통해 웹 페이지에서 마우스의 움직임과 위치에 따라 동적인 상호작용을 구현할 수 있으며, 특정 요소 위에 마우스가 위치할 때 커서의 모양을 변경하여 사용자 경험을 향상시킬 수 있습니다.

This post is licensed under CC BY 4.0 by the author.

Trending Tags