Umbrella JS — это лёгкая библиотека для работы с DOM, упрощающая выбор элементов, манипуляции с ними и обработку событий. Одним из важных аспектов интерактивной веб-разработки является работа с viewport — областью видимости документа, которая видна пользователю на экране. Umbrella JS предоставляет удобные методы для работы с размерами и положением элементов относительно viewport.
Размеры viewport определяются шириной и высотой окна браузера. В
Umbrella JS для этого используется метод window.innerWidth
и window.innerHeight, но библиотека упрощает доступ к этим
значениям через свои утилиты.
Пример:
const viewportWidth = u(window).width();
const viewportHeight = u(window).height();
console.log('Ширина viewport:', viewportWidth);
console.log('Высота viewport:', viewportHeight);
Метод width() и height() возвращает
числовые значения в пикселях, что удобно для дальнейших
вычислений, например, для адаптивной верстки или позиционирования
элементов.
Umbrella JS позволяет определить, находится ли элемент в пределах
видимой области экрана. Для этого используется сочетание методов
offset() и размеров viewport.
const element = u('#myElement');
const offset = element.offset()[0]; // { top: ..., left: ... }
const scrollTop = u(window).scrollTop();
const viewportHeight = u(window).height();
if (offset.top >= scrollTop && offset.top <= scrollTop + viewportHeight) {
console.log('Элемент видим в viewport');
} else {
console.log('Элемент вне viewport');
}
offset() возвращает объект с координатами элемента
относительно документа.scrollTop() позволяет получить текущую прокрутку по
вертикали.Umbrella JS облегчает управление прокруткой. Метод
scrollTop() можно использовать не только для получения
текущей позиции прокрутки, но и для её установки. Это позволяет
программно прокручивать страницу к нужному элементу.
const target = u('#section2');
u('html, body').scrollTop(target.offset()[0].top);
Такой подход гарантирует плавное позиционирование выбранного элемента в верхней части viewport.
Работа с viewport тесно связана с обработкой скролла. Umbrella JS позволяет навешивать события скролла на окно и получать текущую позицию видимой области.
u(window).on('scroll', function() {
const scrollPosition = u(window).scrollTop();
u('.parallax').css({
transform: `translateY(${scrollPosition * 0.5}px)`
});
});
on('scroll', callback) — навешивает обработчик события
прокрутки.transform: translateY обеспечивает
плавную и производительную анимацию, так как работает
на GPU.Для реализации ленивой загрузки изображений или анимаций часто
требуется определить, когда элемент появляется или исчезает из видимой
области. Umbrella JS позволяет комбинировать методы
offset() и текущую прокрутку.
function isInViewport(el) {
const offset = u(el).offset()[0];
const scrollTop = u(window).scrollTop();
const viewportHeight = u(window).height();
return offset.top < scrollTop + viewportHeight && offset.top + u(el).height() > scrollTop;
}
u('.lazy-image').each(function(el) {
if (isInViewport(el)) {
u(el).attr('src', u(el).attr('data-src'));
}
});
each() перебирает все выбранные элементы.attr('data-src') используется для хранения реального
URL изображения до момента его загрузки.isInViewport позволяет загружать
контент только при попадании элемента в видимую область, что улучшает
производительность страницы.Размеры viewport могут динамически изменяться при изменении размеров
окна браузера. Umbrella JS позволяет отслеживать это с помощью события
resize.
u(window).on('resize', function() {
const viewportHeight = u(window).height();
const header = u('#header');
if (viewportHeight < 600) {
header.css({ fontSize: '14px' });
} else {
header.css({ fontSize: '20px' });
}
});
resize срабатывает при изменении размеров
окна.css() и height()
позволяет динамически адаптировать интерфейс к
доступной видимой области.Umbrella JS упрощает вычисления относительных позиций элементов. Это полезно для реализации sticky-элементов, залипания панелей или проверки пересечения элементов.
const a = u('#elementA').offset()[0].top;
const b = u('#elementB').offset()[0].top;
if (a < b) {
console.log('Element A выше Element B');
}
Методы offset() и height() позволяют
строить сложные условия для позиционирования и анимации
элементов в зависимости от их местоположения в viewport.
u(window).width() и u(window).height() —
размеры viewport.u(window).scrollTop() — текущая прокрутка.offset() — координаты элемента относительно
документа.on('scroll', callback) и
on('resize', callback) — обработка скролла и изменения
размеров.Работа с viewport в Umbrella JS объединяет простоту вызовов, точность позиционирования и эффективность вычислений, что делает библиотеку удобным инструментом для интерактивной веб-разработки.