Виртуальные Scroll-контейнеры
Всем привет, на этот раз хочу провести обзор инструмента ng-virtual-scroll-view.
В предыдущей статье я делал обзор на универсальные виртуализированнные списки, которые "под капотом" использовали одноосевой виртуальный scroll-контейнер. Из проекта ng-virtual-list решил вырастить ещё один инструмент, двухосевой виртуальный scroll-контейнер ng-virtual-scroll-view. Инструмент также поддерживает версии Angular с 14 по 22.
С API и примерами использования можно ознакомиться в документации.
Думать над реализацией я приступил, когда проектировал библиотеку для создания виртуализированных списков ng-virtual-list, по причине весомых ограничений, которые накладывает нативная (браузерная) реализация scroll-контейнеров.
Основными преимуществами данного решения является:
- Гибкость в управлении прокруткой. Можно настраивать пользовательские параметры для физики прокрутки. Указывать кастомную продолжительность анимации прокрутки и продолжительность анимации при "прилипании" к краям контейнера.
- Захват и перемещение контента с физикой скольжения работает как на мобильных платформах, так и на PC.
- Смешивание анимаций во время прокрутки. Т.е. другими словами, когда происходит анимация прокрутки, то можно обновить конечные позиции и анимация будет продолжаться, а не применяться заново.
- Возможность указывать начальное и конечное смещение для полосы прокрутки.
- Возможность создавать контейнеры с перекрытием полос прокрутки.
- Возможность указывать грани к которым будет "прилипать" прокрутка при изменении размера контента.
- Полноценная кастомизация полос прокрутки.
- Поддержка "left-to-right" и "right-to-left" режима отображения.
- Также как и в ng-virtual-list, в ng-virtual-scroll-view я поддержал эффект Motion Blur.
Для создания интерактивных кликабельных элементов внутри контентной части scroll-контейнера можно использовать обычные элементы button, применив к ним специальную директиву virtualClick:
Кастомизация полосы прокрутки осуществляется установкой пользовательского компонента в качестве шаблона:
Демонстрация работы компонента: Demo
Репозиторий: Github
P.S.: Если понравился проект, ставьте звездочку ⭐ng-virtual-scroll-view.