반응형
ResizeObserver란?
이름 그대로 크기 변화를 관찰하는 역할을 한다.
어떤 element를 관찰하도록 설정하면 해당 element의 크기가 변화했을 때 콜백 함수를 호출한다.
Constructor
ResizeObserver 객체를 반환한다.
let resizeObserver = new ResizeObserver( callback( entries, observer));
- callback : element의 크기가 변경되면 호출되는 함수
- entries : element의 변경된 치수에 접근할 수 있는 ResizeObserverEntry 객체 배열
- observer : resizeObserver 객체 그 자체. 콜백 함수 내에서 unobserver하는 등의 필요한 경우에 선택적으로 사용할 수 있다.
function callback(entries, observer) {
for (const entry of entries) {
// Do something to each entry
// and possibly something to the observer itself
}
}
ResizeObserverEntry
ResizeObserverEntry에는 크기 변경을 감지한 요소에 대한 정보가 들어있다.
- target : 크기 변경을 감지한 대상 요소
- contentRect : 변경된 사각 영역의 정보를 나타내는 DOMRectReadOnly 객체. width, height 등의 정보를 얻을 수 있다.
const observer = new ResizeObserver(entries => {
for (const entry of entries) {
const target = entry.target;
const contentRect = entry.contentRect;
console.log(`대상 요소: ${target}`);
console.log(`너비: ${contentRect.width}px`);
console.log(`높이: ${contentRect.height}px`);
}
});
observer.observe(targetElement);
DOMRectReadOnly
DOM 요소의 사각 영역 정보를 나타내는 읽기 전용 객체이다.
- x: 사각 영역의 왼쪽 가장자리 좌표 (left와 동일)
- y: 사각 영역의 위쪽 가장자리 좌표 (top과 동일)
- left: 사각 영역의 왼쪽 가장자리 좌표
- top: 사각 영역의 위쪽 가장자리 좌표
- right: 사각 영역의 오른쪽 가장자리 좌표
- bottom: 사각 영역의 아래쪽 가장자리 좌표
- width: 사각 영역의 너비
- height: 사각 영역의 높이
일반 element에서는 .getBoundingClientRect()메소드로 DOMRectReadOnly 객체를 반환한다.
Instance Methods
ResizeObserver.disconnect()
모든 element를 unobserve하는 메소드
이 메소드 호출 이후에는 더 이상 콜백 함수가 실행되지 않는다.
btn.addEventListener("click", () => {
resizeObserver.disconnect();
});
ResizeObserver.observe()
어떤 element를 observer에 등록하는 메소드
대상 요소의 사이즈 변화가 있는 경우, 등록된 콜백 함수가 실행된다.
resizeObserver.observe(element);
ResizeObserver.unobserve()
어떤 element를 unobserve하는 메소드
크기 감지를 해제한다.
resizeObserver.unobserve(element);
# 참조 자료
반응형
'기술 정리 > Javascript' 카테고리의 다른 글
POST API status 201인 응답이 fail 콜백을 호출하는 이유(feat. dataType) (0) | 2023.11.13 |
---|---|
이벤트 버블링과 캡처링: 웹 이벤트 전파 메커니즘 (0) | 2023.09.12 |
[Javascript] foreach (0) | 2021.05.17 |