Zepto.js — облегчённая библиотека, ориентированная на мобильные браузеры, и её возможности удобно использовать для управления поведением интерфейса при изменении ориентации экрана устройства. В мобильной разработке критично отслеживать события поворота экрана и адаптировать под них стили и расположение элементов.
Основным событием, связанным с ориентацией экрана, является
orientationchange. Zepto позволяет легко навешивать
обработчики на это событие с помощью метода .on():
$(window).on('orientationchange', function(event) {
console.log('Изменение ориентации: ', window.orientation);
});
Ключевой момент: window.orientation
возвращает числовое значение, указывающее текущую ориентацию
устройства:
0 — портретная ориентация, устройство вертикально;90 — альбомная ориентация, устройство повернуто
вправо;-90 — альбомная ориентация, устройство повернуто
влево;180 — портретная ориентация, устройство
перевёрнуто.Событие orientationchange обычно используется для
адаптации интерфейса под новую ориентацию:
$(window).on('orientationchange', function() {
if (window.orientation === 0 || window.orientation === 180) {
$('body').addClass('portrait').removeClass('landscape');
} else {
$('body').addClass('landscape').removeClass('portrait');
}
});
В данном примере класс portrait применяется при
вертикальном положении, а landscape — при горизонтальном.
Эти классы позволяют управлять CSS-правилами для различных ориентаций
без дублирования кода.
При изменении ориентации часто требуется перерасчёт размеров
элементов. В Zepto для этого используется событие
resize:
$(window).on('resize', function() {
var width = $(window).width();
var height = $(window).height();
$('#container').css({
width: width * 0.9,
height: height * 0.8
});
});
Важно учитывать, что orientationchange может срабатывать
перед завершением изменения размеров окна, поэтому иногда рекомендуется
сочетать оба события:
function adjustLayout() {
var width = $(window).width();
var height = $(window).height();
$('#main-content').css({ width: width, height: height });
}
$(window).on('orientationchange resize', adjustLayout);
Zepto не имеет встроенного метода для определения ориентации, но можно создать удобную функцию:
function getOrientation() {
return (window.orientation === 0 || window.orientation === 180) ? 'portrait' : 'landscape';
}
$(window).on('orientationchange', function() {
var orientation = getOrientation();
console.log('Текущая ориентация:', orientation);
});
Такой подход позволяет использовать ориентацию как условие для изменения интерфейса, подгрузки элементов или применения анимаций.
orientationchange
срабатывает сразу после физического поворота, но размеры окна могут
изменяться с небольшой задержкой. Для точного расчёта размеров стоит
использовать setTimeout с небольшой задержкой.window.orientation. В таких случаях целесообразно
дополнительно проверять соотношение ширины и высоты:function detectOrientation() {
return $(window).width() > $(window).height() ? 'landscape' : 'portrait';
}
rotate) нужно учитывать физическое изменение
размеров контейнеров, чтобы избежать неправильного позиционирования
элементов.orientationchange и resize.requestAnimationFrame или
setTimeout для отложенного выполнения перерасчётов.function updateLayout() {
var orientation = getOrientation();
$('body').attr('data-orientation', orientation);
var width = $(window).width();
var height = $(window).height();
$('#header').css('height', height * 0.1);
$('#content').css({
width: width * 0.95,
height: height * 0.8
});
$('#footer').css('height', height * 0.1);
}
$(window).on('orientationchange resize', function() {
setTimeout(updateLayout, 100);
});
$(document).ready(updateLayout);
В этом примере:
data-атрибут для хранения текущей
ориентации, что упрощает CSS-правила.setTimeout учитывает задержку
изменения размеров окна после поворота.Работа с ориентацией в Zepto базируется на двух ключевых событиях:
orientationchange и resize. Объединение их
использования позволяет корректно адаптировать интерфейс, минимизировать
баги на разных мобильных устройствах и поддерживать отзывчивый дизайн.
Простые утилитарные функции, такие как определение ориентации и
управление классами CSS, значительно упрощают код и повышают его
читаемость.