JavaScript scrollY — позиція вертикальної прокрутки


Властивість scrollY показує, на скільки пікселів прокручено сторінку від верху.

автор: NagarD

Загальний опис

Класичні застосування — липка шапка, що змінює вигляд після прокрутки, кнопка «нагору» і смуга поступу читання.

Але обробник scroll спрацьовує дуже часто, і читання позиції в ньому змушує браузер рахувати макет. Без обмеження частоти сторінка почне смикатись.

Надійніший спосіб дізнатись «чи прокрутили до цього блоку» — узагалі не рахувати пікселі, а взяти IntersectionObserver: він асинхронний і нічого не перераховує.

автор: NagarD

Порада

Просту липку шапку («тінь після прокрутки») сьогодні роблять узагалі без JavaScript — через CSS-правило animation-timeline: scroll() або position: sticky із контейнерним запитом.

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
scrollY 1+ 1+ 1+ 3+ 12+ 9+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
scrollY yes yes yes yes

Приклади

+ запропонувати свій приклад у пісочниці

Смуга поступу читання без гальм — через requestAnimationFrame.

let ticking = false;

window.addEventListener('scroll', () => {
    if (ticking) {
        return; // не рахуємо частіше, ніж малюється кадр
    }

    ticking = true;

    requestAnimationFrame(() => {
        const max = document.body.scrollHeight - window.innerHeight;
        const percent = window.scrollY / max * 100;

        progress.style.width = percent + '%';
        header.classList.toggle('scrolled', window.scrollY > 50);

        ticking = false;
    });
});
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід