Umbrella JS — это лёгкая библиотека для работы с DOM в JavaScript, предоставляющая удобный и лаконичный синтаксис для выполнения типичных операций, таких как выбор элементов, манипуляции с ними и обработка событий. Одной из важных задач при разработке интерактивных интерфейсов является получение и управление координатами прокрутки страницы и отдельных элементов. Umbrella JS предоставляет простые и эффективные методы для этих целей.
Для работы с прокруткой окна используются свойства
scrollTop и scrollLeft. Umbrella JS
оборачивает стандартные методы, позволяя получать эти значения через
объект u(window).
// Получение вертикальной прокрутки окна
let scrollY = u(window).scrollTop();
// Получение горизонтальной прокрутки окна
let scrollX = u(window).scrollLeft();
Методы scrollTop() и scrollLeft()
возвращают текущее смещение окна относительно начала документа.
Возвращаемое значение всегда числовое, выраженное в пикселях.
Umbrella JS позволяет не только читать, но и изменять координаты
прокрутки. Для этого методам scrollTop() и
scrollLeft() можно передать числовой аргумент.
// Прокрутка окна на 200px вниз
u(window).scrollTop(200);
// Прокрутка окна на 100px вправо
u(window).scrollLeft(100);
Если нужно прокрутить страницу плавно, Umbrella JS напрямую не
предоставляет встроенного метода анимации прокрутки. Однако можно
использовать сочетание requestAnimationFrame или
стандартного CSS-свойства scroll-behavior: smooth.
u(window).css('scroll-behavior', 'smooth');
u(window).scrollTop(500);
Для элементов DOM методы scrollTop() и
scrollLeft() ведут себя аналогично окну, возвращая или
устанавливая смещение содержимого внутри контейнера с прокруткой.
let container = u('#container');
// Получение текущей прокрутки элемента
let containerScrollY = container.scrollTop();
let containerScrollX = container.scrollLeft();
// Установка прокрутки элемента
container.scrollTop(150);
container.scrollLeft(50);
Эти методы особенно полезны при реализации кастомных скроллбаров, динамической подгрузки контента или эффектов «infinite scroll».
Umbrella JS предоставляет метод offset(), который
возвращает объект с координатами элемента относительно документа:
let box = u('.box');
let position = box.offset();
console.log(position.top); // Расстояние сверху документа
console.log(position.left); // Расстояние слева документа
Метод offset() не зависит от текущей прокрутки, что
делает его удобным для вычислений видимости элемента на экране.
Проверка, виден ли элемент в области просмотра:
let viewportHeight = window.innerHeight;
let element = u('.target');
let elementTop = element.offset().top;
let scrollY = u(window).scrollTop();
if (elementTop >= scrollY && elementTop <= scrollY + viewportHeight) {
console.log('Элемент виден на экране');
}
Прокрутка к элементу с учётом отступа:
let headerHeight = 50; // фиксированный заголовок
let target = u('#section2');
u(window).scrollTop(target.offset().top - headerHeight);
Umbrella JS поддерживает цепочки вызовов, что позволяет комбинировать получение и установку прокрутки с другими манипуляциями:
u('#container')
.scrollTop(100)
.addClass('scrolled')
.css('border', '1px solid red');
scrollTop() и scrollLeft() работают
как с окном, так и с любыми элементами, поддерживающими прокрутку.position: fixed методы прокрутки не
изменяют позицию фиксированных блоков, но учитываются при вычислении
видимости других элементов.scroll-behavior: smooth, так как Umbrella JS не реализует
анимацию скролла самостоятельно.Umbrella JS делает работу с прокруткой компактной и лаконичной,
предоставляя единый синтаксис для окна и элементов. Методы
scrollTop, scrollLeft и offset
позволяют легко получать координаты и управлять прокруткой, интегрируя
эти операции в цепочки вызовов для комплексных интерфейсных решений.