portfolio project에서 scrolling 할 때, 화면에 보여지는 section을 navbar에서도 표시한다. 화면에 많이 보여지는 요소가 무엇인지 알아보기 위해 Intersection Observer API를 사용했다.
Intersection Observer API는 관찰자로서 ancestor element 혹은 document의 viewport와 target element의 intersection의 변화를 비동기적으로 관찰하는 방법을 제공한다.
let options = {
root: null,
rootMargin: '0px',
threshold: 1
}
let observer = new IntersectionObserver(callback, options);
let target = document.querySelector('#listItem');
observer.observe(target);
let callback = (entries, observer) => {
entries.forEach(entry => {
// Each entry describes an intersection change for one observed
// target element:
// entry.boundingClientRect
// entry.intersectionRatio
// entry.intersectionRect
// entry.isIntersecting
// entry.rootBounds
// entry.target
// entry.time
});
};
callback 함수에는 IntersectionObserverEntry를 전부 담은 array와 IntersectionObserver object 그 자체의 reference가 매개변수로 전달된다.
Intersection Observer API
Document.elementFromPoint()
Element.closest()