Umbrella JS предоставляет лёгкий и удобный API для работы с DOM, включая управление событиями. Одним из важных аспектов интерактивного веб-программирования является отслеживание изменения размеров окна браузера. Это необходимо для адаптивной верстки, динамического изменения интерфейса и оптимизации отображения элементов.
В Umbrella JS для работы с глобальными событиями используется метод
u(window).on(). Событие изменения размера окна имеет
стандартное имя resize. Пример базовой подписки:
u(window).on('resize', function() {
console.log('Размер окна изменён!');
});
Ключевые моменты:
window — объект глобального окна браузера, к которому
привязывается событие..on() позволяет регистрировать обработчик
события.Для динамической адаптации элементов часто требуется знать текущую
ширину и высоту окна. В JavaScript это доступно через свойства
window.innerWidth и window.innerHeight.
Сочетание с Umbrella JS выглядит следующим образом:
u(window).on('resize', function() {
const width = window.innerWidth;
const height = window.innerHeight;
console.log(`Ширина: ${width}, Высота: ${height}`);
});
Использование этих значений позволяет изменять стиль элементов, перестраивать сетку или управлять видимостью компонентов.
Событие resize генерируется очень часто при изменении
размеров окна, что может привести к проблемам производительности при
сложных вычислениях. Для решения этой задачи используют
дебаунс — задержку вызова обработчика до завершения
серии изменений. В Umbrella JS можно применить стандартные методы
Jav * aScript:
let timeout;
u(window).on('resize', function() {
clearTimeout(timeout);
timeout = setTimeout(function() {
console.log('Обновление после изменения размера окна');
}, 200); // задержка 200 мс
});
Таким образом, обработчик выполняется один раз после окончания изменения размеров окна, снижая нагрузку на страницу.
Umbrella JS облегчает работу с классами и стилями элементов. После получения размеров окна можно изменять оформление элементов в зависимости от ширины или высоты:
u(window).on('resize', function() {
const width = window.innerWidth;
if (width < 600) {
u('.sidebar').hide();
} else {
u('.sidebar').show();
}
});
Методы .hide() и .show() позволяют легко
управлять видимостью элементов без прямого обращения к CSS.
Для реализации адаптивных интерфейсов часто требуется перестраивать
сетку или масштабировать элементы. Umbrella JS совместно с обработчиком
resize позволяет динамически добавлять или удалять
классы:
u(window).on('resize', function() {
const width = window.innerWidth;
u('.grid-item').removeClass('small large');
if (width < 480) {
u('.grid-item').addClass('small');
} else if (width >= 480 && width < 1024) {
u('.grid-item').addClass('medium');
} else {
u('.grid-item').addClass('large');
}
});
Такой подход позволяет управлять стилями через CSS-классы, сохраняя чистоту кода и избегая инлайновых стилей.
Если обработчик события resize больше не нужен, Umbrella
JS предоставляет метод .off():
function resizeHandler() {
console.log('Изменение размера окна');
}
u(window).on('resize', resizeHandler);
// Позже, при необходимости
u(window).off('resize', resizeHandler);
Это предотвращает лишние вызовы функций и освобождает ресурсы, особенно при динамическом создании и удалении компонентов.
Umbrella JS полностью совместим с современным синтаксисом JavaScript. Для краткости кода можно использовать стрелочные функции:
u(window).on('resize', () => {
console.log(`Новая ширина: ${window.innerWidth}`);
});
Стрелочные функции сохраняют контекст, что удобно при обращении к
this внутри методов класса или компонента.
style.resize стоит делать один раз и
минимизировать количество операций внутри обработчика.Событие изменения размера окна в Umbrella JS является мощным инструментом для создания адаптивного и интерактивного интерфейса. Комбинация простого API для подписки на события и удобных методов работы с элементами позволяет реализовывать динамическую подстройку контента без громоздкого кода.