This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Document: событие scroll
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Событиеscroll возникает при прокрутке области просмотра документа или элемента.
Примечание:В iOS UIWebViews событияscroll не срабатывают во время самого прокручивания, только по его завершении. См.issue в Bootstrap #16202. Safari и WKWebViews не подвержены этому багу.
In this article
Примеры
>Пропуск тактов события прокрутки
Поскольку события прокрутки могут запускаться с высокой скоростью, обработчик событий не должен выполнять вычислительно-ёмкие операции, такие как модификации DOM. Вместо этого рекомендуется пропускать такты события, используяrequestAnimationFrame(),setTimeout() илиCustomEvent, как показано ниже.
Обратите внимание, однако, что входные события и кадры анимации запускаются примерно с одинаковой скоростью, и поэтому приведённая ниже оптимизация зачастую не требуется. В примере ниже оптимизируется событиеscroll дляrequestAnimationFrame:
// Источник: http://www.html5rocks.com/en/tutorials/speed/animations/let last_known_scroll_position = 0;let ticking = false;function doSomething(scroll_pos) { // Делаем что-нибудь с позицией скролла}window.addEventListener("scroll", function (e) { last_known_scroll_position = window.scrollY; if (!ticking) { window.requestAnimationFrame(function () { doSomething(last_known_scroll_position); ticking = false; }); ticking = true; }});Больше похожих примеров можно найти на странице событияresize.
Спецификации
| Specification |
|---|
| CSSOM View Module> # eventdef-document-scroll> |
| HTML> # handler-onscroll> |