Spec-Zone.ru › jQuery Mobile

Таблица виджет

Таблица виджетверсия добавлена: 1.3

Описание: Создает адаптивную таблицу

Быстрое навигационное менюПримеры

Параметры

классы
значения по умолчанию
отключено
initSelector

Методы

rebuild

События

создание

Адаптивные таблицы

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

Режим переформатирования — переформатирует столбцы таблицы при узких ширинах, поэтому каждая строка данных представляется как отформатированный блок пар «метка/данные». Это идеально подходит для таблиц с информацией о продуктах или контактах с более сложной или длинной форматировкой данных, не требующей сравнения строк данных.

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

Функция адаптивной таблицы построена с помощью основного плагина таблиц (table.js) который инициализируется при добавлении атрибута data-role="table" в разметку. Этот плагин очень лёгкий и добавляет класс ui-table, анализирует заголовки таблицы и генерирует информацию о столбцах данных, а также запускает событие tablecreate. Оба режима таблиц, переформатирование и переключение столбцов, написаны как расширения виджета таблицы, которые подключаются через событие create для добавления дополнительных возможностей, делающих таблицы адаптивными. Переформатирование является режимом по умолчанию, поэтому, если расширение присутствует, оно будет применено автоматически, если атрибут data-role="table" присутствует в таблице.

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

Общие рекомендации по разметке таблиц

Вот базовая разметка таблицы, которую вы должны использовать для обоих режимов таблиц:

<table data-role="table" id="my-table" data-mode="reflow">
  <thead>
    <tr>
      <th>Rank</th>
      <th>Movie Title</th>
      <th>Year</th>
      <th><abbr title="Rotten Tomato Rating">Rating</abbr></th>
      <th>Reviews</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>1</th>
      <td><a href="foo.com" data-rel="external">Citizen Kane</a></td>
      <td>1941</td>
      <td>100%</td>
      <td>74</td>
    </tr>
    </tbody>
</table>

Оба режима таблиц начинаются со стандартной разметки HTML-таблиц, но для корректной работы адаптивной таблицы необходимо соблюдать некоторые конкретные рекомендации:

  • Следуйте стандартным рекомендациям по разметке HTML-таблиц для правильной семантики
  • Не используйте rowspan или colspan в таблицах, они не поддерживаются, за исключением групповых заголовков (см. ниже)
  • Добавление элементов thead и tbody необязательно, но обеспечивает улучшенную семантику
  • Присвойте уникальное значение ID таблице (необходимо для режима переключения столбцов)
  • Добавьте data-role="table" для применения плагина адаптивной таблицы
  • Режим таблицы по умолчанию — reflow, добавьте data-mode="columntoggle" для изменения режима
  • Первая строка таблицы должна содержать заголовки таблицы, обязательно используйте TH вместо тегов TD
  • Для отображения более длинного текста заголовка столбца в выборе столбцов или меток переформатирования оберните текст в TH с элементом abbr и установите title. Эта строка будет использоваться вместо него.

Стиль и оформление таблиц

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

Таблица будет адаптироваться к любому блоку содержимого, в котором она находится, но явного атрибута оформления для этого виджета нет. Мы сделали это, потому что достаточно просто добавить классы темы, такие как ui-body-a к отдельным ячейкам, если нужно более сложное оформление.

Штрихи и полосы строк

CSS темы содержит предварительно заданные стили штрихов строк и чередующихся полос, которые можно применить, добавив класс table-stroke или table-stripe к элементу table.

Примечание: классы table-stroke и table-stripe устарели с jQuery Mobile 1.4.0 и будут удалены в версии 1.5.0. В демопримерах содержится пример применения этих стилей с помощью пользовательского CSS.

Параметры

классы

Тип: Объект
По умолчанию:
{
        "ui-table": ""
      }
Укажите дополнительные классы для добавления к элементам виджета. Любые классы, указанные в разделе «Оформление», могут быть использованы в качестве ключей для переопределения их значения. Чтобы узнать больше об этом параметре, ознакомьтесь со статьей обучения по параметру classes.
Примеры кода:

Инициализируйте таблицу с указанным параметром classes, изменив оформление для класса ui-table.

$( ".selector" ).table({
  classes: {
    "ui-table": "highlight"
  }
});

Получите или задайте свойство параметра classes, после инициализации, здесь считывается и изменяется оформление для класса ui-table.

// Getter
var themeClass = $( ".selector" ).table( "option", "classes.ui-table" );
 
// Setter
$( ".selector" ).table( "option", "classes.ui-table", "highlight" );

значения по умолчанию

Тип: Логическое значение
По умолчанию: false
Установка этого параметра в значение true указывает, что другие параметры виджетов имеют значения по умолчанию, и заставляет код автоматического улучшения виджетов jQuery Mobile пропустить шаг, где он извлекает значения параметров из атрибутов данных. Это может улучшить время запуска.

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

Примеры кода:

Инициализируйте таблицу с указанным параметром defaults.

$( ".selector" ).table({
  defaults: true
});

Получите или установите параметр defaults, после инициализации:

// Getter
var defaults = $( ".selector" ).table( "option", "defaults" );
 
// Setter
$( ".selector" ).table( "option", "defaults", true );

отключено

Тип: Логическое значение
По умолчанию: false
Отключает таблицу, если установлено значение true.

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

Примеры кода:

Инициализируйте таблицу с указанным параметром disabled.

$( ".selector" ).table({
  disabled: true
});

Получите или установите параметр disabled, после инициализации:

// Getter
var disabled = $( ".selector" ).table( "option", "disabled" );
 
// Setter
$( ".selector" ).table( "option", "disabled", true );

initSelector

Тип: Селектор
По умолчанию: See below

Значение initSelector по умолчанию для виджета таблицы:

":jqmData(role='table')"

Примечание: Этот параметр устарел в версии 1.4.0 и будет удалён в версии 1.5.0.
Начиная с jQuery Mobile 1.4.0, параметр initSelector больше не является параметром виджета. Вместо этого он объявлен непосредственно в прототипе виджета. Таким образом, вы можете указать пользовательское значение, обработав событие mobileinit и переопределив initSelector в прототипе:

$( document ).on( "mobileinit", function() {
  $.mobile.table.prototype.initSelector = "div.custom";
});

Примечание: Помните, что необходимо прикрепить обработчик mobileinit после загрузки jQuery, но перед загрузкой jQuery Mobile, так как событие срабатывает в рамках процесса загрузки jQuery Mobile.

Значение этого параметра — строка селектора jQuery. Фреймворк выбирает элементы на основе значения этого параметра и инициализирует виджеты таблиц для каждого из полученного списка элементов.

(версия устарела: 1.4.0)

Методы

rebuild()Возвращает: jQuery (только для плагина)

Переобработать всю таблицу, чтобы гарантировать правильное отображение.
  • Этот метод не принимает аргументов.
Примеры кода:

Вызовите метод rebuild:

$( ".selector" ).table( "rebuild" );

События

create( event, ui )Тип: tablecreate

Срабатывает при создании таблицы
  • событие
    Тип: Событие
  • ui
    Тип: Объект

Примечание: объект ui пуст, но включён для согласованности с другими событиями.

Примеры кода:

Инициализируйте таблицу с указанным обратным вызовом create:

$( ".selector" ).table({
  create: function( event, ui ) {}
});

Привяжите обработчик событий к событию tablecreate:

$( ".selector" ).on( "tablecreate", function( event, ui ) {} );

Пример:

Базовый пример адаптивной таблицы.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>table demo</title>
  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
  <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>
  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
 
<div data-role="page" id="page1">
  <div data-role="header">
    <h1>jQuery Mobile Example</h1>
  </div>
  <div role="main" class="ui-content">
    <table data-role="table" id="my-table" data-mode="reflow">
      <thead>
        <tr>
          <th>Rank</th>
          <th>Movie Title</th>
          <th>Year</th>
          <th><abbr title="Rotten Tomato Rating">Rating</abbr></th>
          <th>Reviews</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <th>1</th>
          <td><a href="foo.com" data-rel="external">Citizen Kane</a></td>
          <td>1941</td>
          <td>100%</td>
          <td>74</td>
        </tr>
      </tbody>
    </table>
  </div>
</div>
 
</body>
</html>

Демо:

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

Spec-Zone.ru

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