Категории

Ленивая загрузка изображений (Lazy Loading) на чистом JavaScript

27.10.2025 11:34 | коды из категории: Создание сайтов

про Ленивая загрузка изображений (Lazy Loading) на чистом JavaScript

Зачем нужна ленивая загрузка?

Ленивая загрузка (lazy loading) — это техника, при которой контент (чаще всего изображения) загружается только тогда, когда он попадает в поле зрения пользователя. Это позволяет:

В этой статье — простой и эффективный способ реализовать lazy loading на чистом JavaScript без сторонних библиотек.

Как это работает?

Мы используем современный Intersection Observer API, который позволяет отслеживать, когда элемент появляется в области просмотра. Это энергоэффективно и не вызывает «лагов» при прокрутке, в отличие от обработки события scroll.

HTML-разметка

Изображения сначала содержат плейсхолдер (можно использовать маленькое размытое изображение или просто оставить src пустым), а реальный путь к картинке хранится в атрибуте data-src:

<img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1' height='1'%3E</svg>" 
     data-src="путь/к/реальной/картинке.jpg" 
     alt="Описание изображения" 
     class="lazy">

Плейсхолдер в src — это 1×1 прозрачный SVG. Он гарантирует, что браузер не будет пытаться загрузить «пустой» src, и при этом изображение не «прыгает» при загрузке.

JavaScript-скрипт ленивой загрузки

Добавьте этот скрипт перед закрывающим тегом </body> или оберните в DOMContentLoaded:

document.addEventListener("DOMContentLoaded", () => {
  const lazyImages = document.querySelectorAll("img.lazy");

  if ("IntersectionObserver" in window) {
    const imageObserver = new IntersectionObserver((entries, observer) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          const img = entry.target;
          img.src = img.dataset.src;
          img.classList.remove("lazy");
          observer.unobserve(img);
        }
      });
    });

    lazyImages.forEach(img => imageObserver.observe(img));
  } else {
    // Fallback для старых браузеров (например, IE11)
    lazyImages.forEach(img => {
      img.src = img.dataset.src;
      img.classList.remove("lazy");
    });
  }
});

Почему это работает для SEO и Google?

Что дальше?

Этот подход можно расширить:

Если вы используете PHP, React или другой фреймворк — логика остаётся той же: подставляйте data-src вместо src, а скрипт сам подгрузит картинку в нужный момент.

Заключение

Ленивая загрузка — один из самых простых и эффективных способов ускорить сайт. Реализация на чистом JavaScript занимает меньше 20 строк кода, но даёт ощутимый прирост в производительности и UX. Внедряйте — и ваши пользователи (и Google) скажут вам спасибо.

Есть вопросы или идеи для улучшения? Пишите в комментарии — обсудим!

Теги: #javascript #webdesign #lazyload

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку

Важно: Блог-эксперимент

Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


кто я | книга | контакты без контактов

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA