WEB/Html & Css

[Web APIs] 브라우저 좌표, 마우스이벤트 , 윈도우사이즈, 스크롤좌표

Harimad 2022. 4. 11. 13:23

목차

1. Element.getBoundingClientRect()
2. MouseEvent - client X/Y 와 page X/Y 비교

3. 윈도우 사이즈
4. Window.scrollX, Window.scrollY

1. Element.getBoundingClientRect()

정의

The Element.getBoundingClientRect() method returns a DOMRect object providing information about the size of an element and its position relative to the viewport.
의역: Element.getBoundingClientRect() 메서드는 요소의 크기와 뷰포트에 대한 상대적인 위치에 대한 정보를 제공하는 DOMRect 개체를 반환한다.

즉, Element의 위치와 크기 등의 정보를 알고 싶을 때 이 메서드를 사용한다.

 

Syntax

domRect = element.getBoundingClientRect();

 

 

출처: MDN (링크)

 

❗ CSS는 오른쪽 아래를 기준으로 bottom, right 이 측정되기 때문에 주의할 것

 

실습

https://blog.kakaocdn.net/dna/GNSBh/btry33JezXp/AAAAAAAAAAAAAAAAAAAAAJ_NCkaojg3eHcPLA-YI4xpW0S_5P_CVoUyJ1afSWl15/tfile.html?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1769871599&allow_ip=&allow_referer=&signature=fjnUVL2jXcccf8KDiCM%2FRJQQpEA%3D

index.html
0.00MB

 

참고

MDN | Element.getBoundingClientRect() : https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect


2. MouseEvent - client X/Y 와 page X/Y 비교

정의

page의 X,Y 좌표렌더링된 "전체" 페이지의 왼쪽 상단 모서리 기준(스크롤의 숨겨진 부분 포함)

client의 X,Y 좌표는 브라우저 창을 통해 "보이는" 페이지의 왼쪽 상단 모서리 기준

screen의 X,Y 좌표는 화면 모니터에서의 X,Y 좌표

 

출처: https://stackoverflow.com/questions/6073505/what-is-the-difference-between-screenx-y-clientx-y-and-pagex-y
출처: https://i.stack.imgur.com/S8LFi.png

실습

https://blog.kakaocdn.net/dna/xy3iZ/btry32wNacJ/AAAAAAAAAAAAAAAAAAAAALORClzyq9gQSrHEveETsWTLLTRjeI4jJgC42RvUU6uz/tfile.html?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1769871599&allow_ip=&allow_referer=&signature=3IdPRaplMjj425UEekHcrKaz0N8%3D

index.html
0.00MB

참고

https://stackoverflow.com/questions/6073505/what-is-the-difference-between-screenx-y-clientx-y-and-pagex-y

MDN | MouseEvent : https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent


3. 윈도우 사이즈


브라우저를 포함한 모니터 사이즈
window.screen
window.screen.width
window.screen.height

브라우저 전체 사이즈
window.outer
window.outerHeight; // 브라우저 창 외곽 높이
window.outerWidth; // 브라우저 창 외곽 너비

브라우저 웹페이지 사이즈(스크롤바 포함)
‌window.inner
window.innerHeight; // 페이지가 표기되는 부분의 높이 (수직 스크롤 포함한 영역)
window.innerWidth; // 페이지가 표기되는 부분의 너비 (수평 스크롤 포함한 영역)

브라우저 웹페이지 사이즈(스크롤바 제외)
documentElement.client
document.documentElement.clientWidth; // 스크롤바 제외한 영역의 높이
document.documentElement.clientHeight; // 스크롤바 제외한 영역의 너비
※document.documentElement - document를 제외한 DOM 트리의 root인 <html>

 

실습

https://blog.kakaocdn.net/dna/beqlrn/btry66rCyQp/AAAAAAAAAAAAAAAAAAAAAFpyfkcE5De2p2C8U0SBDZWZpVNjnzM8eof7DhtmcPFT/tfile.html?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1769871599&allow_ip=&allow_referer=&signature=Th3yzeMYadlR20CnLb2M%2FaBENn4%3D

index.html
0.00MB

 

종합 이미지

출처: https://baeharam.github.io/posts/javascript/js-window/

 

참고

MDN|Window : https://developer.mozilla.org/en-US/docs/Web/API/Window

 

 


4. Window.scrollX, Window.scrollY

정의

Window 인터페이스의 scrollX 읽기 전용 속성은 문서가 수평으로 얼마나 스크롤됐는지 픽셀 단위로 반환한다. 

최신 브라우저에서는 값의 정밀도가 픽셀보다 작으므로 반드시 정숫값을 반환하는건 아니다.

수직 스크롤은 scrollY 속성을 사용하여 가져올 수 있다.

 

Syntax

var x = window.scrollX
var y = window.scrollY

참고사항

window.pageXOffset === window.scrollX; // 항상 true
window.pageYOffset === window.scrollY; // 항상 true
정숫값이 필요하면 Math.round()를 사용해 반올림할 수 있다.

참고

https://developer.mozilla.org/ko/docs/Web/API/Window/scrollX

https://developer.mozilla.org/ko/docs/Web/API/Window/scrollY