Размеры окна браузера

Umbrella JS предоставляет удобный способ работы с размерами окна браузера, включая ширину, высоту и динамическое отслеживание изменений. Основные методы и свойства позволяют получать значения без необходимости обращаться напрямую к объекту window.

u().windowWidth();  // возвращает ширину окна в пикселях
u().windowHeight(); // возвращает высоту окна в пикселях

Эти методы удобны для адаптивного интерфейса, когда требуется динамически изменять элементы страницы в зависимости от размеров окна.

Отслеживание изменений размеров

Umbrella JS поддерживает событие resize через метод .on(), что позволяет реагировать на изменение размеров окна и корректировать контент:

u(window).on('resize', function() {
    let width = u().windowWidth();
    let height = u().windowHeight();
    console.log(`Ширина: ${width}, Высота: ${height}`);
});

Ключевой момент: объект window оборачивается через u(window) для корректного применения событийной модели Umbrella JS. Это обеспечивает кроссбраузерную совместимость и упрощает управление обработчиками событий.

Использование для адаптивных интерфейсов

Размеры окна часто необходимы при динамическом изменении стилей элементов:

function adjustLayout() {
    if (u().windowWidth() < 768) {
        u('.sidebar').hide();
    } else {
        u('.sidebar').show();
    }
}

u(window).on('resize', adjustLayout);
adjustLayout();

Здесь применяются методы .hide() и .show() библиотеки Umbrella JS, позволяющие изменять видимость элементов без прямой работы с CSS.

Сравнение с нативным подходом

В нативном JavaScript размеры окна получают через window.innerWidth и window.innerHeight. Umbrella JS упрощает работу, оборачивая эти свойства в методы:

  • Преимущество: короткий синтаксис и возможность использования цепочек методов Umbrella JS.
  • Дополнение: поддержка событий через .on() делает код более структурированным и совместимым с остальной функциональностью библиотеки.

Практическая оптимизация

При интенсивной работе с событиями resize желательно использовать дебаунс или троттлинг, чтобы избежать чрезмерного количества вызовов функции при изменении размера окна:

let timeout;
u(window).on('resize', function() {
    clearTimeout(timeout);
    timeout = setTimeout(adjustLayout, 200);
});

Этот приём снижает нагрузку на рендеринг и предотвращает “дергание” интерфейса при быстрых изменениях размеров окна.

Вывод размеров в разных единицах

Umbrella JS возвращает размеры в пикселях, что идеально для большинства задач адаптивного дизайна. При необходимости можно конвертировать значения в другие единицы через простые вычисления:

let widthInRem = u().windowWidth() / parseFloat(getComputedStyle(document.documentElement).fontSize);

Такой подход позволяет использовать значения окна в относительных единицах, удобных для масштабирования интерфейса на разных устройствах.

Объект window и его обёртка

Оборачивание window через u(window) позволяет не только навешивать события, но и использовать цепочку методов Umbrella JS, что делает код единообразным:

u(window)
    .on('resize', adjustLayout)
    .once('load', function() {
        console.log('Начальная ширина окна: ', u().windowWidth());
    });

Метод .once() срабатывает только один раз при загрузке страницы, что удобно для первичной настройки интерфейса.

Итоговые методы

Основные методы Umbrella JS для работы с размерами окна:

Метод Описание
u().windowWidth() Возвращает ширину окна в пикселях
u().windowHeight() Возвращает высоту окна в пикселях
u(window).on('resize', fn) Навешивает обработчик на изменение размера окна
u(window).once('load', fn) Выполняет функцию один раз при загрузке страницы

Использование этих методов обеспечивает лёгкое, читаемое и кроссбраузерное управление размерами окна и адаптивным поведением элементов страницы.