본문 바로가기
Archive

JS 높이와 스크롤

by livemehere 2022. 9. 17.

자바스크립트에서 좌표와 사이즈를 다룰 때 정말 해깔리는 경우가 많다.

또 개발중에 사이즈를 사용하는일이 그렇게 흔한일도 아니기 때문에 더욱이 쓸때마다 기억이 가물가물하다.

확실하게 정의해놔야 해깔리지 않을 거같아서 정리해본다.

 

좌표 : client vs page

우선 좌표(coordinates)는 3 가지가 있다.

client와 page. screen 이다.

client는 실제로 보이는 view 상에서의 위치를 나타낸 값이고

page는 보이지 않는 영역도 감안한 실제 요소 상에서의 위치이다.

page라는 키워드로 직관적으로 기억하면 될 것 같다.

screen 은 모니터 기준이다.

blue.addEventListener("click", (e) => {
  console.log(e.clientX, e.clientY); // 현재 view 기준
  console.log(e.pageX, e.pageY); // element 실제 사이즈 기준
});

이 값들은 클릭 이벤트에서 얻을 수 있다.

 

스크롤 APIs

브라우저에서 화면을 좌표로 이동시키는 것은 scroll이다.

특정 좌표로 이동시킨다 = 스크롤을 한다.

 

3가지 방법이 있는데,

1. 특정 단위로 스크롤

2. 특정 좌표로 스크롤

3. 특정 요소로 스크롤

// by 만큼 이동
window.scrollBy({
          top: 100,
          left: 0,
          behavior: "smooth",
        });
        
// to 로 이동
 window.scrollTo({
          top: 100,
          left: 0,
          behavior: "smooth",
        });
        
// 요소로 이동
 blue.scrollIntoView({
          behavior: "smooth",
});

 

 

Element의 총 스크롤 길이얻기

document.querySelector('body').offsetHeight // 4095

document.querySelector('body').scrollHeight // 4095

document.querySelector('body').offsetHeight // 4095

3가지는 미세한 차이가있다.

우선 공통적으로 모두 마진은 제외한다.

scrollHeight는 padding, border 포함한 길이

clientHeight는 padding 만 포함한 길이

offsetHeight는 padding, border, scrollBar 를 모두 포함한 길이이다.

 

getBoundingClientRect

여기서 주의할 점은 bottom과 right 가 css의 속성과 다르다는 점에서 헤깔리지 말아야한다.

이 메서드의 좌표 기준은 반드시 0,0 이 기준이다.

 

 

반응형

'Archive' 카테고리의 다른 글

window load는 한개가 아니다  (0) 2022.09.17
stompJS에 기여하기와 한단계 성장한 느낌  (0) 2022.09.16
JS 모듈  (0) 2022.09.04
제너레이터  (0) 2022.09.04
Promise의 5가지 API  (0) 2022.09.04