IntersectionObserver
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.
interface IntersectionObserver {
readonly rootMargin: string;
readonly thresholds: ReadonlyArray<number>;
disconnect(): void;
observe(target: Element): void;
takeRecords(): IntersectionObserverEntry[];
unobserve(target: Element): void;
}var IntersectionObserver: {
prototype: IntersectionObserver;
new (callback: IntersectionObserverCallback, options?: IntersectionObserverInit): IntersectionObserver;
};