JavaScript IntersectionObserver.rootMargin — запас навколо області
Властивість rootMargin розширює або звужує область спостереження — як margin у CSS.
Загальний опис
Це те, завдяки чому ліниве завантаження не помітне. З rootMargin: '200px' спостерігач спрацює за 200 пікселів до того, як елемент з'явиться на екрані — і картинка встигне завантажитись, доки користувач до неї догортає.
Додатні значення розширюють область, від'ємні звужують — так можна спрацьовувати, лише коли елемент опинився в центрі екрана.
Синтаксис такий самий, як у margin: '200px 0', '10% 0px'.
- Нотатка
-
Значення мають бути в пікселях або відсотках — інші одиниці кидають помилку. І порожні одиниці не можна:
автор: NagarD'200'не спрацює, треба'200px'.
Переглядачі
| Переглядач | ||||||
|---|---|---|---|---|---|---|
| rootMargin | 51+ | 55+ | 12.1+ | 38+ | 15+ | - |
| Переглядач | ||||
|---|---|---|---|---|
| rootMargin | 51+ | yes | yes | 12.2+ |
Приклади
+ запропонувати свій приклад у пісочниці
Завантажити картинку за 300px до появи на екрані.
HTML
<div style="height: 400px"></div>
<img id="lazy" src="/img/logo.svg" width="100" alt="Лінива картинка">
JS
function load(entries) {
entries.forEach(entry => console.log('Елемент видно:', entry.isIntersecting));
}
const observer = new IntersectionObserver(load, {
// спрацює ЗАЗДАЛЕГІДЬ — користувач не помітить завантаження
rootMargin: '300px 0px',
});
observer.observe(document.getElementById('lazy'));
// від'ємне значення — навпаки, звужує область:
// спрацює лише коли елемент у центрі екрана
const centered = new IntersectionObserver(entries => {}, {
rootMargin: '-40% 0px',
});
Коментарі
Коментарів ще немає — будьте першим!