jQuery Mobile

jQuery Mobile — это фреймворк, построенный на базе jQuery, предназначенный для создания адаптивных мобильных веб-приложений с поддержкой сенсорных интерфейсов и различных устройств. Основная цель библиотеки — упрощение разработки мобильных интерфейсов, предоставление готовых компонентов и анимаций для страниц и элементов управления.

jQuery Mobile использует HTML5-разметку и атрибуты data-, что позволяет создавать интерактивные мобильные интерфейсы без необходимости глубокого погружения в JavaScript. Библиотека автоматически управляет переходами между страницами, анимациями и адаптацией элементов под размеры экранов.


Структура страниц и переходы

В jQuery Mobile каждая “страница” определяется как отдельный <div> с атрибутом data-role="page". Внутри страницы могут находиться header, content и footer:

<div data-role="page" id="page1">
    <div data-role="header">
        <h1>Заголовок страницы</h1>
    </div>
    <div data-role="content">
        <p>Основное содержимое страницы.</p>
        <a href="#page2" data-role="button">Перейти на вторую страницу</a>
    </div>
    <div data-role="footer">
        <h4>Футер</h4>
    </div>
</div>

<div data-role="page" id="page2">
    <div data-role="header">
        <h1>Вторая страница</h1>
    </div>
    <div data-role="content">
        <p>Содержимое второй страницы.</p>
    </div>
</div>

Переходы между страницами автоматически обрабатываются библиотекой, используя AJAX-загрузку и плавные анимации. Атрибут data-transition позволяет задавать стиль анимации:

<a href="#page2" data-role="button" data-transition="slide">Скользящий переход</a>

Поддерживаются эффекты: slide, fade, pop, flip и другие.


Основные элементы управления

jQuery Mobile предоставляет набор готовых виджетов для создания интерактивного интерфейса:

Кнопки

Элементы <a> и <button> могут быть преобразованы в кнопки с помощью data-role="button":

<a href="#" data-role="button" data-icon="star">Кнопка с иконкой</a>

Атрибут data-icon добавляет иконку к кнопке, data-mini="true" уменьшает размер кнопки, а data-inline="true" позволяет располагать кнопку в одну линию с другими элементами.

Списки

Для создания списков используется ul или ol с data-role="listview":

<ul data-role="listview">
    <li><a href="#">Элемент 1</a></li>
    <li><a href="#">Элемент 2</a></li>
    <li><a href="#">Элемент 3</a></li>
</ul>

Списки поддерживают добавление разделителей, иконок, мини-кнопок и встроенных счетчиков через атрибуты data-divider-theme, data-icon, data-count.

Формы и элементы ввода

jQuery Mobile улучшает стандартные элементы формы (input, select, textarea) с помощью стилизации и виджетов:

<label for="name">Имя:</label>
<input type="text" name="name" id="name" value="">

<label for="fruit">Выберите фрукт:</label>
<select name="fruit" id="fruit" data-native-menu="false">
    <option>Яблоко</option>
    <option>Банан</option>
    <option>Апельсин</option>
</select>

<input type="checkbox" name="agree" id="agree" data-mini="true">
<label for="agree">Согласен с условиями</label>

Атрибут data-native-menu="false" заменяет стандартное выпадающее меню на кастомный мобильный виджет. Параметр data-mini="true" уменьшает размер элемента для компактного интерфейса.


Темизация и стили

jQuery Mobile поддерживает темы, которые позволяют изменять внешний вид виджетов и страниц без изменения HTML-кода. Тема задается через атрибут data-theme и может быть применена к отдельным элементам или всей странице:

<div data-role="page" data-theme="b">
    <div data-role="header" data-theme="a">
        <h1>Заголовок</h1>
    </div>
</div>

Каждая тема (буквы от a до e) задает цветовую схему для заголовков, контента, кнопок и других элементов. Для более сложной стилизации можно создавать собственные CSS-файлы поверх стандартной темы.


Работа с событиями

jQuery Mobile расширяет стандартные события jQuery, добавляя специальные мобильные события:

  • pagecreate — вызывается после создания страницы.
  • pagebeforeshow и pageshow — срабатывают до и после отображения страницы.
  • pagebeforehide и pagehide — события перед скрытием и после скрытия страницы.
  • tap — имитация одиночного касания.
  • swipeleft / swiperight — события свайпов.

Пример использования:

$(document).on("pageshow", "#page1", function() {
    console.log("Страница 1 показана");
});

$("#button1").on("tap", function() {
    alert("Кнопка нажата через тач-событие");
});

События можно навешивать как на отдельные элементы, так и на всю страницу, что упрощает управление динамическим контентом.


AJAX-навигация и динамическая загрузка контента

jQuery Mobile по умолчанию использует AJAX для переходов между страницами, что позволяет загружать только содержимое <div data-role="page">, а не всю HTML-страницу. Это уменьшает время отклика и создает эффект “одностраничного приложения”.

Для отключения AJAX можно использовать атрибут data-ajax="false":

<a href="fullpage.html" data-ajax="false">Полная загрузка страницы</a>

Поддержка адаптивности

jQuery Mobile автоматически подстраивает элементы под разные размеры экранов и устройства. Система сетки (grid) позволяет создавать колонки и ряды с адаптивной шириной:

<div class="ui-grid-a">
    <div class="ui-block-a">Левый блок</div>
    <div class="ui-block-b">Правый блок</div>
</div>

Сетки бывают a, b, c, d, что позволяет задавать до 4 колонок на одной строке. Элементы автоматически масштабируются под ширину экрана.


Поддержка устаревших и современных устройств

jQuery Mobile ориентирован на широкий спектр мобильных устройств, включая старые смартфоны и планшеты. Он адаптирует элементы управления, учитывая возможности браузера, разрешение экрана и сенсорные события. При необходимости можно подключать сторонние плагины и расширения для расширенной функциональности.


Поддержка темизации кнопок и элементов управления

Каждый виджет можно стилизовать индивидуально с помощью атрибутов:

  • data-iconpos="left|right|top|bottom" — позиция иконки.
  • data-corners="false" — убирает скругление углов.
  • data-shadow="false" — отключает тень.
  • data-mini="true" — уменьшенный размер элемента.

Пример кнопки с кастомной темой и иконкой:

<a href="#" data-role="button" data-icon="gear" data-iconpos="right" data-mini="true" data-corners="false">
    Настройки
</a>

Эти возможности позволяют тонко настраивать внешний вид интерфейсов без изменения глобальных стилей.


jQuery Mobile представляет собой мощный инструмент для создания кросс-платформенных мобильных приложений с минимальными усилиями, позволяя разработчикам сосредоточиться на функциональности, а не на низкоуровневых аспектах интерфейса.