08 Модуль - Вслытие событий -- 03 IntersectionObserver API Flashcards
Intersection Observer API этот интерфейс предоставляет возможность
наблюдать за заданными элементами и упрощает реализацию отслеживания изменения в их пересечении с заданным элементом-предком или самим окном просмотра (viewport), то есть слежения за видимостью элемента.
Observer (наблюдатель, обзервер) -
результат вызова класса IntersectionObserver, его экземпляр, объект с методами.
Root (корень, контекст) - это элемент, который
ожидает пересечения элемента-цели. Основа наблюдателя. По умолчанию это окно просмотра браузера (viewport), но может использоваться любой другой элемент, если этого требует задача.
Target (цель) - элемент,
за которым следит наблюдатель и оповещает о его вхождении в корень. Целью может быть любой элемент. Один наблюдатель может отслеживать множество различных целей.
При рассчете пересечений, Intesection Observer рассматривает все элементы как
прямоугольник, вне зависимости от их внешнего вида.
rootMargin используется
для увеличения или уменьшения размеров границ корня для рассчета пересечений.
Хотя Intersection Observer API поддерживается всеми последними версиями современных браузеров, следует позаботиться о
polyfill(полифиле), чтобы он гарантированно работал во всех актуальных версиях.
Использование Intersection Observer
IntersectionObserver(callback, options)
Достаточно создать новый экземпляр класса IntersectionObserver, принимающий два аргумента — callback-функцию и объект настроек.
IntersectionObserver(callback, options)
По умолчанию, коллбэк будет вызываться,
когда элемент появляется и исчезает из области видимости.
const onEntry = (entries, observer) => { };
const observer = new IntersectionObserver(onEntry, options);
Вторым агументом в колбек передается
ссылка на сам экземпляр обзервера
Порог вхождения (threshold) означает,
сколько процентов элемента должно попасть в область видимости для срабатывания коллбэка. Значения могут варьироваться от 0.01 до 1.0.
Пример IntersectionObserver(callback, options)
const options = { rootMargin: '50px', threshold: 0.5, };
const onEntry = (entries, observer) => { entries.forEach(entry => { // тут можно писать логику для проверки вхождения }); };
const observer = new IntersectionObserver(onEntry, options);
observer.observe(elem);
После того как экземпляр IntersectionObserver создан, необходимо
предоставить один или несколько целевых элементов для наблюдения. Для этого на экземляре вызывается метод observe(elem), который принимает ссылку на DOM-элемент за которым необходимо наблюдать. Когда элемент войдет (или выйдет) в область видимости (root), будет вызвана callback-функция переданная при создании экземпляра.
observer.unobserve(element) что делает
element, это то за чем нужно перестать наблюдать.
observer.disconnect() что делает
перестает следить за всеми событиями.