Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

HTML DOM MouseEvent clientY 속성 – 마우스 포인터의 세로 좌표 구하기

HTML DOM MouseEvent clientY 속성이란?

HTML DOM의 MouseEvent clientY 속성은 마우스 이벤트가 발생한 시점에 마우스 포인터의 세로(Y) 좌표를 반환합니다. 이때 좌표는 브라우저 뷰포트, 즉 현재 화면에 보이는 영역의 왼쪽 상단 모서리를 원점(0, 0)으로 하여 픽셀 단위로 측정됩니다.

clientX 속성과 함께 사용하면 가로(X) 좌표까지 함께 얻을 수 있습니다. 두 속성을 조합하면 마우스 위치 추적, 드래그 앤 드롭, 커스텀 툴팁, 미니게임 등 다양한 인터랙티브 기능을 손쉽게 구현할 수 있습니다.

문법(Syntax)

clientY 속성은 읽기 전용(read-only)이며, MouseEvent 객체에서 다음과 같이 참조하여 사용합니다.

MouseEventObject.clientY

반환값은 픽셀(px) 단위의 숫자(Number) 타입입니다.

유사 좌표 속성과의 차이

  • clientY — 뷰포트(브라우저 화면) 기준의 Y 좌표
  • pageY — 문서 전체 기준의 Y 좌표 (스크롤 거리 포함)
  • screenY — 물리적 모니터 화면 기준의 Y 좌표

페이지가 스크롤된 상태에서도 clientY는 항상 현재 보이는 화면을 기준으로 값을 반환하므로, 스크롤 위치와 무관한 좌표가 필요할 때 적합합니다.

예제: clientX·clientY로 만드는 미니게임

아래 예제는 mousemove 이벤트와 clientX, clientY 속성을 활용한 간단한 게임입니다. 초록색(안전) 영역 안에서 커서를 수평으로 이동시켜 목표 지점(x = 439)에 도달하면 성공하고, 빨간색(위험) 영역에 진입하면 실패하는 방식입니다.

<!DOCTYPE html>
<html>
<head>
<title>MouseEvent clientY</title>
<style>
    * {
        padding: 2px;
        margin:5px;
    }
    form {
        width:70%;
        margin: 0 auto;
        text-align: center;
    }
    #outer {
        width:70%;
        margin: 0 auto;
        padding: 0;
        text-align: center;
        border:1px solid black;
        height: 105px;
        background-color: #28a745;
    }
    input[type='button'] {
        border-radius: 10px;
    }
    #upper {
        border-bottom: 1px solid black;
        height: 40px;
        margin: 0 0 15px 0;
        background-color: #DC3545;
    }
    #lower {
        border-top: 1px solid black;
        height: 40px;
        margin: 15px 0 0 0;
        background-color: #DC3545;
    }
</style>
</head>
<body>
    <form>
        <fieldset>
            <legend>MouseEvent-clientY</legend>
            <div id='outer'>
            <div id='upper'><h2>Danger</h2></div>
            <div id='lower'><h2>Danger</h2></div>
            </div>
            <input type='button' id='start' value='Start' onclick='gameStart()'>
            <div id='divDisplay'></div>
        </fieldset>
    </form>
<script>
    var divDisplay = document.getElementById('divDisplay');
    var gameDisplay = document.getElementById('outer');
    function playGame(event) {
        var x = event.clientX;
        var y = event.clientY;
        if(y > 95 && y < 110){
            divDisplay.textContent = 'Keep Going!';
            if(x === 439){
                divDisplay.textContent = 'Congrats! You Did it!';
                gameDisplay.removeEventListener('mousemove', playGame);
            }
        }
        else{
            divDisplay.textContent = 'You moved to DANGER area. You lose!';
            gameDisplay.removeEventListener('mousemove', playGame);
        }
    }
    function gameStart(){
        gameDisplay.addEventListener('mousemove',playGame);
    }
</script>
</body>
</html>

실행 결과

1. 'Start' 버튼을 클릭한 후 커서가 초록색(안전) 영역 내부에 있을 때 — 'Keep Going!' 메시지가 표시되며 게임이 계속 진행됩니다.

HTML DOM MouseEvent clientY 속성 – 마우스 포인터의 세로 좌표 구하기

2. 커서가 초록색(안전) 영역의 끝 지점에 도달했을 때 — 'Congrats! You Did it!' 메시지와 함께 게임이 성공적으로 종료되고, mousemove 이벤트 리스너가 제거됩니다.

HTML DOM MouseEvent clientY 속성 – 마우스 포인터의 세로 좌표 구하기

3. 커서가 빨간색(위험) 영역에 진입했을 때 — 'You moved to DANGER area. You lose!' 메시지가 표시되며 게임에서 패배합니다.

HTML DOM MouseEvent clientY 속성 – 마우스 포인터의 세로 좌표 구하기

마무리 정리

MouseEvent의 clientY 속성은 마우스 이벤트 발생 시 포인터의 세로 좌표를 뷰포트 기준으로 반환하는 읽기 전용 속성입니다. clientX와 함께 사용하면 2차원 좌표를 손쉽게 얻을 수 있으며, 이를 활용하면 마우스 움직임에 반응하는 다양한 웹 인터랙션을 구현할 수 있습니다. Chrome, Firefox, Safari, Edge 등 주요 브라우저에서 모두 지원되므로 호환성 걱정 없이 사용할 수 있습니다.