Таблица виджетверсия добавлена: 1.3
Описание: Создает адаптивную таблицу
Адаптивные таблицы
Одна из самых больших задач в адаптивном веб-дизайне (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 пуст, но включён для согласованности с другими событиями.
Инициализируйте таблицу с указанным обратным вызовом 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>