Вступление #

Для работы ленивой загрузки можно использовать класс .js-lazy-loading по умолчанию. Для изображений необходимо использовать специальный data-атрибут data-lazy-src, где в значениях указывается путь к изображению.

Установка #

Пример разметки и инициализации ленивой загрузки.

	<img
		class="js-lazy-loading"
		data-lazy-src="../assets/images/demo/1.jpg"
	/>

	<!-- Ленивая загрузка так же работает с обычными DOM-элементами -->
	<div
		class="js-lazy-loading"
		data-lazy-options='{
			"type" "content loaded",
			"callback": "MyLazyCallback"
		}'
	></div>
const options = {
	type: 'content loaded',
	preview: '../assets/images/preview.jpg',
	callback: 'MyLazyCallback',
	parentScrollElement: document.querySelector('.my-parent-scroll-container'),
	classNames: {
		lazy: 'my-lazy-loading-item',
		loaded: 'my-lazy-loading-item--loaded',
	},
}

BasicLazyLoading.init('.my-lazy-loading', options)
BasicLazyLoading.init(document.querySelector('.my-lazy-loading'), options)
BasicLazyLoading.init(document.querySelectorAll('.my-lazy-loading'), options)

// или

BasicLazyLoading.init() // по умолчанию инициaлизирует элементы с классом .js-lazy-loading

Конфигурация #

Настройки, заданные с использованием data-атрибутов.

data-lazy-options #

В значение указываются параметры для гибкой настройки ленивой загрузки.

<img
	class="js-lazy-loading"
	data-lazy-src="../assets/images/demo/1.jpg"
	data-lazy-options='{
		"type": "content loaded",
		"preview": "../assets/images/preview.jpg",
		"callback": "MyLazyCallback",
		"parentScrollElement": document.querySelector(".my-parent-scroll-container"),
		"classNames": {
			"lazy": "my-class-lazy-loading",
			"loaded": "my-class-lazy-loaded"
		}
	}'
/>

Параметры:

Название Тип Описание
type string Тип отложенной загрузки, имеет два значения:
1). content loaded — Когда будет загружена вся страница. Данный тип значения относится к событию DOMContentLoaded;
2). viewport(по умолчанию) — Когда элемент будет в области видимости экрана.
preview string Превью для изображений. Использовуется в качестве временной замены.
callback object Функция обратного вызова, которая вызывается после инициализации ленивой загрузки.
parentScrollElement object Родительский элемент, отвечающий за прокрутку. По умолчанию window.
classNames object Список классов, где есть два значения:
1). lazy — Применяется ко всем элементам, которые загружаются лениво;
2). loaded — Класс, который добавляется после инициализации ленивой загрузки.

Экземпляр #

У каждого инициализированного элемента есть свой экземпляр.

const myLazyLoading = document.querySelector('.my-lazy-loading')

console.log(myLazyLoading.BasicLazyLoading) // пример экземпляра