Spec-Zone.ru › jQuery Mobile

.buttonMarkup()

.buttonMarkup( options, overwriteClasses )Возвращает: jQueryверсия устарела: 1.4.0

Описание: Добавляет стили кнопки к элементу

  • .buttonMarkup( options, overwriteClasses )

    • options
      Тип: Объект
      • corners (по умолчанию: true)
        Тип: Булево
        Добавляет класс ui-corner-all при true и удаляет его при false. Это придаёт элементу, стилизованному как кнопка, скругленные углы.

        Этот параметр также доступен как атрибут данных: data-corners="false"

      • icon (по умолчанию: "")
        Тип: Строка
        Добавляет класс иконки, приставляя к значению строку "ui-icon-" и класс позиции иконки, основанной на значении параметра iconpos.

        Например, если значение — "arrow-r", а значение параметра iconpos — "left", то .buttonMarkup() добавит классы ui-icon-arrow-r и ui-btn-icon-left к каждому из сопоставленных элементов.

        Этот параметр также доступен как атрибут данных: data-icon="arrow-r"

      • iconpos (по умолчанию: "left")
        Тип: Строка
        Добавляет класс позиции иконки, приставляя к значению строку "ui-btn-icon-", когда у элемента, стилизованного как кнопка, есть иконка.

        Например, если значение — "right", а у элемента, стилизованного как кнопка, есть иконка, то класс ui-btn-icon-right будет добавлен к каждому из сопоставленных элементов.

        Этот параметр также доступен как атрибут данных: data-iconpos="right"

      • iconshadow (по умолчанию: false)
        Тип: Булево
        Этот параметр устарел в версии 1.4.0 и будет удален в 1.5.0.

        Добавляет класс ui-shadow-icon к каждому из сопоставленных элементов, когда значение равно true, и у элемента, стилизованного как кнопка, есть иконка.

        Этот параметр также доступен как атрибут данных: data-iconshadow="true"

        (версия устарела: 1.4.0)
      • inline (по умолчанию: false)
        Тип: Булево
        Добавляет класс ui-btn-inline к каждому из сопоставленных элементов, если значение равно true.

        Этот параметр также доступен как атрибут данных: data-inline="true"

      • mini (по умолчанию: false)
        Тип:
        Добавляет класс ui-mini к каждому из сопоставленных элементов, если значение равно true.

        Этот параметр также доступен как атрибут данных: data-mini="true"

      • shadow (по умолчанию: true)
        Тип: Булево
        Добавляет класс ui-shadow к каждому из сопоставленных элементов, если значение равно true.

        Этот параметр также доступен как атрибут данных: data-shadow="false"

      • theme (по умолчанию: null, inherited from parent)
        Тип: Строка
        Значение — буква a-z, идентифицирующая один из цветовых образцов в текущей теме, или null.

        Этот параметр добавляет класс, образованный добавлением строки "ui-btn-" к значению, к каждому из сопоставленных элементов. Если значение равно null, класс не добавляется, а образец наследуется от родительского элемента.

        Например, значение "b" добавит класс ui-btn-b к каждому из сопоставленных элементов.

        Этот параметр также доступен как атрибут данных: data-theme="b"

    • overwriteClasses (по умолчанию: false)
      Тип: Булево
      При значении true, .buttonMarkup() отбрасывает все классы каждого из сопоставленных элементов и добавляет классы, основанные на значениях, переданных в параметр options. Вы можете использовать эту функцию для повышения производительности в ситуациях, когда элемент, который вы хотите улучшить, не имеет других классов, кроме стилей кнопок, добавленных .buttonMarkup().

      Напротив, при значении false, .buttonMarkup() сначала анализирует существующие классы, найденные в каждом из сопоставленных элементов, и вычисляет набор существующих параметров, основанных на наличии или отсутствии классов, связанных со стилями кнопок, уже присутствующих. Оно отдельно записывает все классы, не связанные со стилями кнопок. Затем оно объединяет параметры, указанные в параметре options, с вычисленными параметрами таким образом, что options имеют приоритет, и вычисляет список классов, которые должны присутствовать для выражения этих параметров в стиле элемента. Затем оно повторно применяет классы, не связанные со стилями кнопок, а также классы, отражающие новый набор параметров. Это означает, что вызов .buttonMarkup() на том же элементе несколько раз будет иметь ожидаемый эффект:

      // Initially corners are turned off
      $( "#myAnchor" ).buttonMarkup({ corners: false });
       
      // Later on we turn off shadow - the lack of corners is retained
      $( "#myAnchor" ).buttonMarkup({ shadow: false });
       
      // Later still we turn corners back on - the lack of shadow is retained
      $( "#myAnchor" ).buttonMarkup({ corners: true });
Примечание: .buttonMarkup() устарела с jQuery Mobile 1.4.0 и будет удалена в 1.5.0. Теперь вы можете назначить полный набор параметров стилей кнопок вашим button или a элементам, просто добавив классы.

Переход к стилям на основе классов

Следующие моменты помогут вам перейти от стилей кнопок на основе атрибутов данных к стилям на основе классов:
  • При использовании иконок всегда необходимо указывать класс для позиции иконки вместе с классом самой иконки, так как стандартной позиции иконки больше нет. В примере ниже класс ui-btn-icon-left добавлен, чтобы убедиться, что иконка (ui-icon-arrow-r) будет отображаться.
    <a href="http://example.com/" class="ui-btn ui-icon-arrow-r ui-btn-icon-left ui-corner-all ui-shadow ui-btn-inline">Example</a>
  • Хотя атрибуты данных, связанные со стилями, устарели, атрибуты данных, связанные с поведением ссылок, остаются неизменными. В примере ниже кнопка стилизуется с помощью классов, но атрибуты данных, связанные с ссылками, сохранены.
    <a href="/" data-rel="external" class="ui-btn ui-corner-all ui-shadow ui-btn-inline ui-icon-home ui-btn-icon-left">Home</a>
  • В период устаревания не рекомендуется смешивать стили на основе атрибутов данных и стили на основе классов.

Разметка кнопок

Вы можете использовать .buttonMarkup() для стилизации любого элемента как привлекательной и удобной кнопки на мобильном устройстве. Это вспомогательная функция, позволяющая управлять классами, связанными со стилизацией кнопок. Для каждого элемента в наборе сопоставленных элементов эта функция преобразует параметр options в список классов, которые будут применены к элементу, сохраняя при этом существующие классы элемента, не связанные со стилизацией кнопок. Вы также можете установить параметр overwriteClasses в значение true для повышения производительности. Когда overwriteClasses установлено в значение true, функция отбрасывает существующие классы и применяет классы, соответствующие предоставленным параметрам.

Автоинициализация

Фреймворк автоматически применяет стили кнопок к якорям, которые имеют атрибут data-role="button", а также к элементам button, якорям, содержащимся непосредственно в панелях и виджетах controlgroup. Вы можете указать параметры стилей кнопок через атрибуты данных, которые вы добавляете к якорю или элементу button. Атрибут данных, соответствующий каждому параметру .buttonMarkup(), описан в разделе параметры .buttonMarkup(). Пример ниже демонстрирует необходимую разметку для кнопки на основе якоря.

<a href="index.html" data-role="button">Link button</a>

Создает эту кнопку на основе якоря:

Кнопка на основе кнопки:

.buttonMarkup() также автоматически улучшает элементы button, такие как элемент ниже:

<button>Button element</button>

Внешний вид отключения

Вы можете стилизовать якорь как отключенный, добавив класс ui-state-disabled.

Примечание: Невозможно «отключить» якоря. Класс ui-state-disabled просто добавляет стили, чтобы якорь выглядел отключенным. Он не предоставляет функциональности, эквивалентной атрибуту disabled кнопки формы. Возможность следовать по якорю методами навигации, не связанными с указательным устройством, всё ещё сохраняется.

<a href="index.html" data-role="button" class="ui-state-disabled">Link button</a>

Создает кнопку на основе якоря со стилем отключения:

В случае с элементами button вы должны применить класс ui-state-disabled, когда вы установите атрибут button элемента disabled.

// Toggle the class ui-state-disabled in conjunction with modifying the value
// of the button element's "disabled" property
$( "button#myButton" )
  .prop( "disabled", isDisabled )
  .toggleClass( "ui-state-disabled", isDisabled );

Кнопки в строку

По умолчанию все кнопки в основном содержимом стилизованы как блочные элементы, поэтому они заполняют всю ширину экрана:

Если у вас несколько кнопок, которые должны располагаться рядом в одной строке, добавьте атрибут data-inline="true" к каждой кнопке. Это позволит стилизовать кнопки так, чтобы они занимали ширину своего содержимого, и разместить кнопки в одной строке.

<a href="index.html" data-role="button" data-inline="true">Cancel</a>
<a href="index.html" data-role="button" data-inline="true" data-theme="b">Save</a>

Если вы хотите, чтобы кнопки располагались рядом, но занимали всю ширину экрана, вы можете использовать сетки колонок содержимого, чтобы разместить обычные кнопки полной ширины в 2 или 3 столбцах.

Мини-версия

Для более компактной версии, полезной в инструментальных панелях и узких местах, добавьте атрибут data-mini="true" к кнопке, чтобы создать мини-версию.

<a href="index.html" data-role="button" data-mini="true">Link button</a>

Это создаст кнопку, которая не так высока, как стандартная версия, и имеет меньший размер текста.

Добавление иконок в кнопки

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

Иконку можно добавить в кнопку, добавив атрибут data-icon в якорь, который указывает иконку для отображения. Например:

<a href="index.html" data-role="button" data-icon="delete">Delete</a>

Набор иконок

Следующие атрибуты data-icon могут быть использованы для создания отображаемых ниже иконок:

Позиционирование иконок

По умолчанию все иконки в кнопках размещаются слева от текста кнопки.

Этот параметр по умолчанию можно изменить, используя атрибут data-iconpos для размещения иконки справа, сверху (верх) или снизу (низ) от текста. Например:

<a href="index.html" data-role="button" data-icon="delete" data-iconpos="right">Delete</a>

Вы также можете создать кнопку только с иконкой, установив атрибут data-iconpos в значение notext. Плагин кнопки скроет текст на экране, но добавит его как атрибут title к ссылке, чтобы предоставить контекст для экранных читателей и устройств, поддерживающих всплывающие подсказки. Например, заменив data-iconpos="right" в предыдущем примере на data-iconpos="notext".

<a href="index.html" data-role="button" data-icon="delete" data-iconpos="notext">Delete</a>

Создаёт эту кнопку только с иконкой:

Миниатюрные и в строку

Атрибуты миниатюрной и в строку могут быть добавлены для создания более компактных кнопок:

Пользовательские иконки

Для использования пользовательских иконок укажите значение data-icon с уникальным именем, как myapp-email, и плагин кнопки сгенерирует класс, добавив префикс ui-icon- к значению data-icon и применит его к кнопке: ui-icon-myapp-email.

Затем вы можете написать правило CSS в своём стиле, которое нацелено на класс ui-icon-myapp-email:after, чтобы указать исходный источник иконки фона. Фреймворк содержит встроенный тест SVG (в формате data URI) и добавляет класс ui-nosvg к элементу html, если это не поддерживается. Если вы используете SVG-иконки, вы можете использовать этот класс, чтобы обеспечить резервное копирование для внешних PNG-иконок.

.ui-icon-myapp-email:after {
  background-image: url('data:image/svg+xml;...');
}
.ui-nosvg .ui-icon-myapp-email:after {
  background-image: url( "app-icon-email.png" );
}

Иконки и темы

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

Пример иконки

Группировка кнопок

Иногда вам может потребоваться визуально сгруппировать набор кнопок, чтобы сформировать единый блок, который выглядит содержательно, как компонент навигации. Для достижения этого эффекта оберните набор кнопок в контейнер с атрибутом data-role="controlgroup" - фреймворк создаст вертикальную группу кнопок, удалит все отступы и тени между кнопками и округлит только первую и последнюю кнопки набора, чтобы создать эффект группировки.

<div data-role="controlgroup">
  <a href="index.html" data-role="button">Yes</a>
  <a href="index.html" data-role="button">No</a>
  <a href="index.html" data-role="button">Maybe</a>
</div>

По умолчанию сгруппированные кнопки представляются в виде вертикального списка:

Добавив атрибут data-type="horizontal" к контейнеру controlgroup, можно переключиться на горизонтальную группу, которая размещает кнопки рядом и устанавливает ширину только достаточную для размещения содержимого. (Обратите внимание, что эти элементы могут переходить на несколько строк, если количество кнопок или общая длина текста слишком велика для экрана.)

Метки

Поскольку элемент label будет связан с каждой отдельной кнопкой input или button, и будет скрыт для целей форматирования, мы рекомендуем обернуть кнопки в элемент fieldset, у которого есть атрибут legend, который служит объединённой меткой для группы. Использование label в качестве обертки вокруг входного элемента предотвращает его скрытие фреймворком, поэтому вам нужно использовать атрибут for для связывания label с входным элементом.

Тематизация элементов, стилизованных как кнопки

jQuery Mobile имеет богатую систему оформления, которая предоставляет вам полный контроль над стилями кнопок. Когда ссылка добавляется в контейнер, ей автоматически присваивается буквенный штрих темы, соответствующий родительской панели или блоку содержимого, чтобы визуально интегрировать кнопку в родительский контейнер, как хамелеона. Так, кнопка, размещенная внутри контейнера содержимого с темой "a", будет автоматически назначена кнопочной теме "a". Ниже приведены примеры пар кнопочных тем в основной теме. Все кнопки имеют одинаковую разметку HTML:

Назначение штрихов тем

Кнопкам можно вручную назначить любой из цветовых штрихов кнопок из темы, чтобы добавить визуального контраста с контейнером, в котором они находятся, добавив атрибут data-theme в разметку кнопки и указав букву штриха.

<a href="index.html" data-role="button" data-theme="b">Swatch b</a>

Ниже приведены 2 кнопки с иконками, которым назначена разная буква штриха темы через атрибут data-theme.

Варианты тем

© The jQuery Foundation and other contributors
Licensed under the MIT License.
https://api.jquerymobile.com/buttonMarkup

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API