인스타그램 클론 프로젝트를 진행하다 Infinite-Scroll를 구현하기 위해 알아보던 중 IntersectionObserver에 대해서 정리하게 되었습니다.
The IntersectionObserver interface of the Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport. 출처 - MDN
Intersection Observer API 의 IntersectionObserver 인터페이스는 대상 요소와 상위 요소 또는 최상위 문서의 뷰포트 의 교차점에서 변경 사항을 비동기식으로 관찰하는 방법을 제공합니다.
IntersectionObserver API는 관측 요소가 부모 요소 또는 viewport 관계에서 가시성(보이는지 안 보이는지)을 쉽게 알 수 있도록 기능을 제공합니다.
(한참 헷갈리다가 코드보고 이해했습니다...)
대표적인 사용 예시
// 콜백함수와 옵션을 받습니다.
const io = new IntersectionObserver(callback[, options])
callback
관측 요소가 타켓 요소와 교차되었을 때 실행할 함수로 두 개의 파라미터를 입력받습니다
options
root: scrollable Element
또는 null
Element
의 경우 관측 요소의 부모 요소를 뜻함. rootMargin
0px 0px 0px 0px
threshold
// option 설정
const options = {
// root: null, // viewport
root: document.querySelector('.container'),
rootMargin: '10px', // '10px 10px 10px 10px'
threshold: [0, 1], // 관측 요소가 교차영역에 진입했을 때, 교차 영역에 관측 요소가 100% 있을 때 observer가 반응.
};
// IntersectionObserver 생성
const io = new IntersectionObserver((entries, observer) => {
// IntersectionObserverEntry 객체 리스트와 observer 본인(self)를 받음
// 원하는 동작 작성
entries.forEach((entry) => {
console.log('entry:', entry);
console.log('observer:', observer);
});
}, options);
IntersectionObserver.observe(targetElement)
IntersectionObserver.unobserve(targetElement)
unobserve(targetElement)
을 실행하면 이 엘리먼트에 대한 관찰만 멈출 수 있습니다.IntersectionObserver.disconnect()
IntersectionObserver.takerecords()
지금까지 IntersectionObserver API에 대해서 알아봤습니다.
IntersectionObserver를 사용하면 기존의 scroll 이벤트를 사용하여 구현하는 방식보다 간단하게 구현이 가능합니다.
이제 프로젝트에 적용하러..
👀 IntersectionObserver API
Intersection Observer API의 사용법과 활용방법
레진 기술블로그