반응형
Notice
Recent Posts
«   2024/12   »
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
Today
Total
관리 메뉴

오식랜드

[javascript] 요소의 좌표값 구하기 본문

dev-log/html·css·js

[javascript] 요소의 좌표값 구하기

개발하는 오식이 2021. 5. 6. 10:14
반응형

wrapper 안에 box의 좌표값을 구해보자.

상대위치

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
    	.wrapper{
            height: 2000px;
            margin-top: 100px;
            padding-top: 200px;
        }
        .box{
            background-color: rgb(77, 175, 255);
            width: 300px;
            height: 300px;
            margin-top: 50px;
        }
    </style>
</head>
<body>
    <div class="wrapper">
        <div class="box"></div>
    </div>
<script>
    let box = document.querySelector('.box'),  // 요소 선택
    console.log(box.getBoundingClientRect())
</script>
</body>
</html>

 

getBoundingClientRect 객체를 이용하여 출력해보면 box의 정보값을 보여준다

 

viewport로부터 box의 위치값이 출력된다. 

그리고 여기서 우리가 사용할 top값을 scroll 이벤트에서 출력해보면, 스크롤 할 때 마다 위치가 바뀌게 된다.

viewport를 기준으로 잡기 때문에 쭉 스크롤 하여 요소가 화면 보다 더 위로 가게 되면 음수로 출력이 된다. 

    window.addEventListener('scroll', function(){
        console.log(box.getBoundingClientRect().top)
    })

 

절대위치

앞에서 구한 상대위치에 스크롤 된 길이를 더해주면 절대값이 나온다.

window.pageYOffset 을 이용해 스크롤 된 길이를 알 수 있다. 

<script>
    let box = document.querySelector('.box');  // 요소 선택
    
     window.addEventListener('scroll', function(){
        console.log(box.getBoundingClientRect().top) // 상대위치
        console.log(box.getBoundingClientRect().top + window.pageYOffset) // 절대위치
    });
</script>

 

이대로 출력해보면 상대위치 값은 스크롤 할 때 마다 바뀌지만 상대좌표는 동일하게 나오는게 확인된다!

반응형
Comments