Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: loading, lazy, intersection, img, optimisation

Как реализовать ленивую загрузку (lazy loading) элементов на странице с помощью атрибута loading? Какие есть альтернативные методы?

Этот вопрос проверяет знание ленивой загрузки, которая оптимизирует производительность страниц, загружая элементы, только когда они становятся видимыми. Важно знать современные методы и альтернативы.

Короткий ответ

Ленивая загрузка — это техника, которая позволяет откладывать загрузку изображений или фреймов до тех пор, пока они не появятся в видимой области экрана. Атрибут loading="lazy" в теге <img> или <iframe> автоматически откладывает загрузку элемента. Это сокращает время начальной загрузки страницы и снижает использование трафика. Альтернативные методы включают использование Intersection Observer API для более гибкого контроля над загрузкой элементов.

Длинный ответ

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

Атрибут loading:
HTML5 добавил нативную поддержку ленивой загрузки для элементов <img> и <iframe> с помощью атрибута loading.

<img src="image.jpg" alt="Lazy loaded image" loading="lazy">

При использовании этого атрибута браузер автоматически загружает изображение только тогда, когда оно будет находиться в видимой области экрана.

Преимущества loading="lazy":

  • Простота использования: Добавление атрибута требует минимальных изменений в коде.

  • Улучшенная производительность: Ускоряет рендеринг страницы, так как уменьшает количество загружаемых ресурсов.

  • Поддержка браузерами: Современные браузеры поддерживают этот атрибут, что делает его доступным для использования без сторонних библиотек.

Альтернативные методы:

Intersection Observer API: Этот API предоставляет больше контроля над тем, когда элементы должны загружаться. Он отслеживает, когда элемент попадает в видимую область, и запускает загрузку ресурса.

const img = document.querySelector('img'); 
const observer = new IntersectionObserver((entries, observer) => {  
	entries.forEach(entry => {    
		if (entry.isIntersecting) {      
			entry.target.src = entry.target.dataset.src;      
			observer.unobserve(entry.target);    
		}  
	}); 
}); 
observer.observe(img);

Отложенная загрузка с помощью JavaScript: Можно вручную отложить загрузку, меняя значение атрибута src у изображений или элементов <iframe> только когда они становятся видимыми.
Ленивая загрузка помогает сократить время загрузки страницы и экономить трафик пользователя. Хотя атрибут loading="lazy" — это удобное и простое решение, более сложные сценарии можно реализовать с помощью Intersection Observer для тонкой настройки процесса загрузки. 

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • JavaScript

    JavaScript

  • HTML

    HTML

Ключевые слова

#loading

#lazy

#intersection

#img

#optimisation

Подпишись на React Developer в телеграм