Библиотека Cash представляет собой облегчённый аналог jQuery, предоставляющий удобные методы для работы с DOM, включая управление прокруткой страницы и отдельных элементов. Cash поддерживает цепочки вызовов и оптимизирована для современных браузеров, что делает её эффективным инструментом для динамических интерфейсов.
Cash предоставляет несколько ключевых методов для работы с прокруткой:
.scrollTop() Позволяет получить или
задать вертикальную позицию прокрутки элемента. Работает как для
window, так и для любых элементов с прокручиваемым
содержимым.
// Получение текущей позиции прокрутки страницы
let scrollPosition = $(window).scrollTop();
// Установка прокрутки страницы на 200 пикселей
$(window).scrollTop(200);
// Прокрутка элемента с классом .container до 100 пикселей
$('.container').scrollTop(100);
Ключевой момент: при чтении значения возвращается число в пикселях, при установке — можно использовать число или функцию, возвращающую число.
.scrollLeft() Аналогично
.scrollTop(), но управляет горизонтальной прокруткой.
$('.container').scrollLeft(50);Cash не содержит встроенного метода animate, как jQuery,
однако прокрутку можно реализовать через CSS-свойство
scroll-behavior или через нативный scrollTo с
опцией { beh * avior: 'smooth' }.
// Плавная прокрутка страницы к 500 пикселей по вертикали
window.scrollTo({ top: 500, beh * avior: 'smooth' });
// Плавная прокрутка элемента
$('.container')[0].scrollTo({ left: 200, beh * avior: 'smooth' });
В сочетании с Cash удобнее выбирать элементы и применять нативные методы:
$('.container').each(el => el.scrollTo({ top: 100, beh * avior: 'smooth' }));
Метод .on() позволяет подписываться на событие
scroll для страницы или конкретного элемента.
$(window).on('scroll', () => {
console.log('Текущая позиция прокрутки:', $(window).scrollTop());
});
$('.container').on('scroll', function() {
console.log('Прокрутка элемента:', $(this).scrollTop());
});
Важное замечание: события scroll могут срабатывать очень
часто. Для оптимизации производительности рекомендуется использовать
дебаунс или троттлинг.
Иногда требуется прокрутить элемент так, чтобы конкретный дочерний
элемент оказался видимым. Для этого используется комбинация
.offset() и .scrollTop().
let item = $('.item').first();
let container = $('.container');
let scrollTop = item.offset().top - container.offset().top + container.scrollTop();
container.scrollTop(scrollTop);
Принцип работы: вычисляется смещение целевого элемента относительно контейнера и корректируется текущей прокруткой контейнера.
До начала элемента: Используется
scrollTop(0) или scrollLeft(0).
До конца элемента: Можно вычислить с помощью
scrollHeight и clientHeight:
let container = $('.container')[0];
$(container).scrollTop(container.scrollHeight - container.clientHeight);
Cash позволяет комбинировать методы, используя цепочки вызовов, что упрощает управление прокруткой:
$('.container')
.scrollTop(100)
.scrollLeft(50)
.on('scroll', () => console.log('Элемент прокручивается'));
Для прокрутки к конкретному элементу на странице:
let target = $('#target');
let top = target.offset().top;
$(window).scrollTop(top);
Для плавной прокрутки:
window.scrollTo({ top: $('#target').offset().top, beh * avior: 'smooth' });
Иногда требуется скрыть скроллбар, но при этом управлять прокруткой:
.container {
overflow: hidden; /* скроллбар скрыт */
}
В этом случае прокрутка возможна только программно через
.scrollTop() или .scrollLeft().
.offset() и .scrollHeight для точной
прокрутки.Управление прокруткой через Cash сочетает простоту синтаксиса и гибкость нативных возможностей браузера, что позволяет реализовать как простую прокрутку до элемента, так и сложные динамические интерфейсы с плавными переходами.