@vicimpa/observers
— это легковесная библиотека на TypeScript, которая
предоставляет утилиты для наблюдения за событиями пересечения и изменения
размера DOM-элементов. Эта библиотека упрощает использование
IntersectionObserver
и ResizeObserver
, предоставляя простые в использовании
функции с автоматической очисткой.
Вы можете установить библиотеку с помощью npm или yarn:
npm install @vicimpa/observers
или
yarn add @vicimpa/observers
Функция intersectionObserver
позволяет наблюдать, когда целевой элемент
пересекается с областью просмотра или указанным корневым элементом.
type IntersectionListener = (entry: IntersectionObserverEntry) => void;
export function intersectionObserver<T extends Element>(
target: T | null | undefined,
listener: IntersectionListener,
): () => void;
target
: DOM-элемент для наблюдения. Может быть типаElement
,null
илиundefined
.listener
: Функция обратного вызова, которая будет вызываться всякий раз, когда целевой элемент пересекается с областью просмотра или корневым элементом. Функция получает объектIntersectionObserverEntry
в качестве аргумента.
Функцию очистки, которая прекращает наблюдение за целевым элементом и отключает наблюдатель.
import { intersectionObserver } from "@vicimpa/observers";
const targetElement = document.getElementById("myElement");
const cleanup = intersectionObserver(targetElement, (entry) => {
if (entry.isIntersecting) {
console.log("Элемент в поле зрения");
} else {
console.log("Элемент вне поля зрения");
}
});
// Для прекращения наблюдения
cleanup();
Функция resizeObserver
позволяет наблюдать за изменениями размера целевого
элемента.
type ResizeListener = (entry: ResizeObserverEntry) => void;
export function resizeObserver<T extends Element>(
target: T | null | undefined,
listener: ResizeListener,
): () => void;
target
: DOM-элемент для наблюдения. Может быть типаElement
,null
илиundefined
.listener
: Функция обратного вызова, которая будет вызываться всякий раз, когда размер целевого элемента изменяется. Функция получает объектResizeObserverEntry
в качестве аргумента.
Функцию очистки, которая прекращает наблюдение за целевым элементом.
import { resizeObserver } from "@vicimpa/observers";
const targetElement = document.getElementById("myElement");
const cleanup = resizeObserver(targetElement, (entry) => {
console.log("Размер элемента изменился", entry.contentRect);
});
// Для прекращения наблюдения
cleanup();
function intersectionObserver<T extends Element>(
target: T | null | undefined,
listener: IntersectionListener,
): () => void;
- target:
T | null | undefined
- Элемент для наблюдения. - listener:
(entry: IntersectionObserverEntry) => void
- Функция обратного вызова, которая выполняется при пересечении целевого элемента.
function resizeObserver<T extends Element>(
target: T | null | undefined,
listener: ResizeListener,
): () => void;
- target:
T | null | undefined
- Элемент для наблюдения. - listener:
(entry: ResizeObserverEntry) => void
- Функция обратного вызова, которая выполняется при изменении размера целевого элемента.
Вклады приветствуются! Пожалуйста, откройте issue или отправьте pull request на GitHub.
Эта библиотека вдохновлена нативными API IntersectionObserver
и
ResizeObserver
и направлена на предоставление более простого интерфейса для
общих случаев использования.
Не стесняйтесь обращаться, если у вас есть вопросы или нужна дополнительная помощь. Удачного кодирования!