IntersectionObserver API i progi
Tworzenie obserwatorów i konfigurowanie progów widoczności
IntersectionObserver API i progi to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Działanie IntersectionObserver
IntersectionObserver wywołuje funkcje zwrotne, gdy element pojawia się w obszarze widocznym (lub w innym kontenerze przewijania) albo z niego znika. Jest nowoczesną i wydajną alternatywą dla odbiorników zdarzeń przewijania — przeglądarka wykonuje obliczenia, a kod uruchamia się tylko przy rzeczywistych zmianach widoczności.
Tworzenie obserwatora
new IntersectionObserver(callback, options) tworzy obserwator. Funkcja zwrotna otrzymuje tablicę wpisów, gdy zmieniają się przecięcia; opcje określają obserwowany kontener oraz progi, przy których ma nastąpić wywołanie.
const observer = new IntersectionObserver((entries) => {
for (const entry of entries) {
if (entry.isIntersecting) {
console.log("Visible:", entry.target);
}
}
});
observer.observe(document.querySelector(".hero"));Obiekt IntersectionObserverEntry
Każdy wpis zawiera target (obserwowany element), isIntersecting (wartość logiczną), intersectionRatio (od 0 do 1), boundingClientRect, intersectionRect oraz time. Do binarnych kontroli widoczności należy używać isIntersecting, a do logiki zależnej od procentu widocznego elementu — intersectionRatio.
Opcja threshold
{ threshold: 0.5 } wywołuje funkcję zwrotną za każdym razem, gdy współczynnik przecięcia przekroczy granicę 50%. Tablica [0, 0.25, 0.5, 0.75, 1] pozwala wywoływać ją przy każdym kolejnym kwartale — jest to przydatne przy tworzeniu wskaźników postępu lub analiz, które raportują „% widoczności”.
Opcja root
Domyślnie obserwator mierzy przecięcie z obszarem widocznym. Ustawienie root: someScrollableDiv pozwala mierzyć je względem wewnętrznego kontenera przewijania — na przykład wirtualizowanej listy umieszczonej w elemencie div o stałej wysokości.
Opcja rootMargin
rootMargin: "200px" powiększa obszar obserwacji o 200 pikseli z każdej strony. Należy użyć tej opcji, aby wywołać funkcję wcześniej (rozpocząć ładowanie obrazów 200 pikseli przed ich pojawieniem się w obszarze widocznym) lub później (wywoływać ją dopiero, gdy element całkowicie minie obszar widoczny).
new IntersectionObserver(callback, {
rootMargin: "0px 0px 200px 0px",
threshold: 0
});observe i unobserve
observer.observe(element) rozpoczyna obserwowanie elementu, a observer.unobserve(element) je kończy. Gdy funkcja zwrotna nie jest już potrzebna (np. po jednokrotnym uruchomieniu leniwego ładowania), należy zawsze wyłączyć obserwowanie, aby zwolnić pamięć.
disconnect
observer.disconnect() kończy obserwowanie wszystkich obserwowanych elementów. Należy wywołać tę metodę po odmontowaniu komponentu lub gdy obserwator nie jest już potrzebny — zapobiega to wyciekom powodowanym przez obserwatory działające dłużej niż przypadek użycia, do którego je utworzono.
Asynchroniczne dostarczanie
Funkcje zwrotne są wywoływane asynchronicznie i grupowo — wiele zmian przecięcia podczas szybkiego przewijania powoduje jedno wywołanie z wszystkimi wpisami, a nie osobne wywołanie dla każdego elementu. To duża korzyść wydajnościowa w porównaniu z odbiornikami przewijania, które uruchamiają się przy każdym zdarzeniu przewijania.
Pierwsze wywołanie funkcji zwrotnej następuje natychmiast
Po rozpoczęciu obserwowania nowego elementu funkcja zwrotna jest wywoływana niemal natychmiast z jego bieżącym stanem. Ułatwia to obsługę elementów, które są już widoczne w chwili rozpoczęcia obserwacji, bez tworzenia osobnej ścieżki inicjalizacji.
Typowe przypadki użycia
Leniwe ładowanie obrazów, uruchamianie animacji po przewinięciu elementu do obszaru widocznego, nieskończone przewijanie (obserwowanie elementu sygnalizacyjnego w pobliżu końca listy), śledzenie artykułów rzeczywiście przeczytanych przez użytkownika oraz przełączanie przyklejonego nagłówka na podstawie widoczności sekcji hero.
Sprawdź swoją wiedzę
Jaka jest różnica między threshold: 0 a threshold: 1 w IntersectionObserver?
Podsumowanie
IntersectionObserver wywołuje funkcje zwrotne przy zmianach widoczności elementów, zapewniając wbudowaną optymalizację i grupowanie wywołań — należy zastępować nim odbiorniki przewijania w logice zależnej od widoczności. Konfigurację określają threshold (od 0 do 1 albo tablica), root (niestandardowy kontener przewijania) oraz rootMargin (powiększenie lub pomniejszenie obserwowanego obszaru). Metody observe i unobserve służą do obsługi konkretnych elementów, a disconnect sprząta wszystko.
Często zadawane pytania
Czy lekcja „IntersectionObserver API i progi” jest bezpłatna?
Tak — pełny tekst „IntersectionObserver API i progi” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „IntersectionObserver API i progi”?
Tworzenie obserwatorów i konfigurowanie progów widoczności Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „IntersectionObserver API i progi”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- IntersectionObserver API i progi
- Leniwe ładowanie za pomocą IntersectionObserver
- Implementacja nieskończonego przewijania
- Konfiguracja animacji powiązanych z przewijaniem