0Pricing
HTML Academy · Lekcja

Leniwe ładowanie obrazów — loading=lazy

Opóźnianie ładowania obrazów znajdujących się poza ekranem za pomocą natywnego atrybutu loading

Leniwe ładowanie obrazów — loading=lazy to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 3 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.

Atrybut loading

<img loading="lazy" src="..."> informuje przeglądarkę, aby odroczyła pobranie obrazu do momentu, gdy ten będzie miał za chwilę wejść do obszaru widoku. Natywna obsługa we wszystkich nowoczesnych przeglądarkach sprawia, że jest to najprostszy sposób na poprawę wydajności stron zawierających dużo obrazów.

Jak definiuje się „blisko obszaru widoku”

Przeglądarki stosują niewielki margines heurystyczny (zwykle kilka tysięcy pikseli poniżej dolnej krawędzi widoku). Obraz zaczyna się ładować wystarczająco wcześnie, aby został w pełni wyrenderowany, gdy użytkownik przewinie do niego stronę — leniwe ładowanie jest niezauważalne dla osób przewijających stronę uważnie.

Kiedy nie stosować leniwego ładowania

Nie należy ustawiać loading="lazy" dla obrazów znajdujących się w początkowym obszarze widoku ani dla obrazu będącego kandydatem LCP (largest contentful paint). Odroczone ładowanie opóźnia najważniejszy element wizualny, co pogarsza zarówno postrzeganą szybkość, jak i wskaźniki Core Web Vitals.

Wymagane wartości width i height

Aby leniwe ładowanie było skuteczne, należy podać elementowi <img> jawne wartości width i height (lub użyć CSS aspect-ratio). Bez wymiarów przeglądarka nie może zarezerwować miejsca, przewijanie powoduje ponowne rozmieszczenie układu, a heurystyka leniwego ładowania działa nieprawidłowo.

<img loading="lazy" src="cat.jpg" width="800" height="600" alt="A cat">

Leniwe ładowanie iframe

Ten sam atrybut działa w przypadku elementu <iframe>. <iframe loading="lazy"> odracza ładowanie map, filmów i osadzonych treści z mediów społecznościowych znajdujących się poniżej początkowego obszaru widoku — każdy z tych elementów w przeciwnym razie pobierałby megabajty kodu JavaScript innych firm przy każdym wyświetleniu strony.

eager jest wartością domyślną

Wartością domyślną jest loading="eager" (ładowanie natychmiastowe) i rzadko zapisuje się ją jawnie. Ustawienie eager dla obrazów znajdujących się w początkowym obszarze widoku może być przydatne jako dokumentacja, sygnalizując osobom przeglądającym kod, że wybór eager był zamierzony.

Łączenie z srcset

Leniwe ładowanie doskonale współdziała z obrazami responsywnymi. Przeglądarka nadal wybiera właściwy wariant z srcset — po prostu odracza jego pobranie. Nie jest wymagana dodatkowa koordynacja między loading="lazy" a srcset.

<img
  loading="lazy"
  srcset="img-400.jpg 400w, img-800.jpg 800w, img-1200.jpg 1200w"
  sizes="(min-width: 768px) 800px, 100vw"
  src="img-800.jpg"
  alt="Hero"
  width="800" height="600"
>

Wskazówka dotycząca dekodowania

Połącz leniwe ładowanie z decoding="async", aby umożliwić przeglądarce dekodowanie obrazu poza głównym wątkiem. Zapobiega to blokowaniu obsługi wejścia podczas przewijania, gdy po dłuższym, intensywnym przewijaniu jednocześnie pojawia się wiele obrazów.

Obrazy tła

CSS background-image nie może być natywnie ładowany leniwie. W przypadku teł bohatera znajdujących się w początkowym obszarze widoku nie stanowi to problemu; dla teł poniżej tego obszaru należy użyć IntersectionObserver, aby podmienić URL, gdy element zbliży się do obszaru widoku.

Zachowanie podczas drukowania

Podczas drukowania strony przeglądarka ładuje wszystkie obrazy bez odroczenia, niezależnie od ustawienia loading="lazy", aby drukowana kopia była kompletna. Nie trzeba dodawać specjalnych wyjątków dla leniwie ładowanych obrazów w arkuszach stylów przeznaczonych do druku.

Pomiar oszczędności

Audyt Lighthouse „Defer offscreen images” wymienia każdy obraz, dla którego należy użyć loading="lazy". Filtrowanie w panelu Network według „Img” oraz widok „Waterfall” pokazują rozłożone w czasie pobrania generowane przez leniwe ładowanie — w galeriach obrazów liczba początkowych żądań znacząco spada.

Sprawdzenie wiedzy

Dlaczego ustawienie loading="lazy" dla obrazu bohatera znajdującego się u góry strony jest szkodliwe?

Podsumowanie

Ustawienie loading="lazy" dla elementów <img> i <iframe> znajdujących się poza obszarem widoku to poprawa wydajności za pomocą jednego atrybutu. Należy połączyć je z jawnymi wartościami width/height (aby zarezerwować miejsce), srcset (dla responsywności) oraz decoding="async" (aby przewijanie pozostało płynne). Nie należy nigdy stosować go do obrazu LCP ani do elementów widocznych w początkowym obszarze widoku.

Często zadawane pytania

Czy lekcja „Leniwe ładowanie obrazów — loading=lazy” jest bezpłatna?

Tak — pełny tekst „Leniwe ładowanie obrazów — loading=lazy” 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 „Leniwe ładowanie obrazów — loading=lazy”?

Opóźnianie ładowania obrazów znajdujących się poza ekranem za pomocą natywnego atrybutu loading Ć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 3 z 4.

Ile czasu zajmuje lekcja „Leniwe ładowanie obrazów — loading=lazy”?

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

  1. Atrybuty async i defer
  2. Preload, prefetch i preconnect
  3. Leniwe ładowanie obrazów — loading=lazy
  4. Wskazówki dotyczące zasobów — modulepreload
← Powrót do HTML Academy