Бесконечный скролл

Бесконечный скролл (ленивая подгрузка) — способ представления большого количества однородной информации, когда при открытии страницы загружается только часть контента, остальное скачивается по мере скролла страницы, незаметно для пользователя.

Такой интерфейс вводит пользователя в состояние потока: не нужно отвлекаться на переход между страницами, крутишь и крутишь.

Когда использовать

Используйте бесконечный скролл в новостных лентах, галереях, развлекательном контенте.

Не используйте бесконечный скролл, если пользователю может быть нужно непоследовательно перемещаться по контенту. Например, для списка документов в Диадоке больше подходит пейджинг — у пользователя есть возможность быстро перейти на несколько страниц вперёд, или даже в конец списка.

Не используйте ленивую подгрузку, если ниже блока со скроллом есть другой независимый контент, за исключением стандартного подвала.

Описание работы

При открытии страницы контента должно хватить ещё на 1 экран. Например, если на первый экран помещается 20 элементов, то загружаем сразу 40.

Схема: окно браузера со страницей из строк-заглушек, под нижним краем окна загружено ещё столько же контента — на второй экран

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

Та же схема после прокрутки: выше окна уже просмотренный контент, ниже нижнего края окна подгружен запас ещё на один экран

Если контент не успел загрузиться, показывается спиннер:

Конец списка из строк-заглушек, под ним спиннер с подписью «Загрузка…»

Скролл-бар на странице работает без всяких хитростей, мы не пытаемся сделать скролл такого размера, как если бы весь контент был загружен сразу. Точно и надёжно сделать это не получится. Да и большой потребности в этом нет: перемещаться по огромному массиву данных с помощью скроллинга будет неудобно.

Скролл-бар, которым удобно пользоваться для навигации по объёмному контенту, называется инфоскроллер.

Инфоскролл дорог в реализации, и его уместно использовать в исключительных случаях.