Несколько <thead> / <tbody> в таблице. Верно?

82

Представьте себе список списков, подобных этому:

var list = [
  { name: 'group1', 
    items: [ 1, 2, 3, 4, 5 ]
  },
  { name: 'group2', 
    items: [ 1, 2, 3, 4, 5 ]
  },
  etc...
]

Теперь забывая целые «таблицы являются для данных , не дизайн» аргумент, я хотел , чтобы отобразить одну таблицу для listи имеют индивидуальный <thead>и <tbody>для каждой записи в list.

Это технически верно? Это работает в браузере, но мои паучьи чувства покалывают .

АльбертЭнгельБ
источник
1
У вас определенно может быть несколько тел, мне нужно будет проверить спецификацию, чтобы узнать о них.
Kevin B
2
@KevinB: IIRC не более одного thead и одного tfoot: w3.org/TR/html-markup/table.html#table
Zeta
1
@unor Мой вопрос связан с несколькими <thead>и <tfooter>элементов, а не <tbody>. Они не совпадают и продиктованы отдельными правилами.
AlbertEngelB
@ Dropped.on.Caprica: Ах да, я пропустил, что вам также нужно несколько thead элементов. Я отозвал голосование.
unor

Ответы:

120

Вы можете иметь столько <tbody>элементов, сколько хотите, но не более одного каждого из <thead>и <tfoot>. Ссылка :

Модель контента:

В этом порядке: необязательно элемент caption, за которым следуют ноль или более элементов colgroup, за которыми, необязательно, следует элемент thead, за которым следует либо ноль или несколько элементов tbody, либо один или несколько элементов tr, за которым, необязательно, следует элемент tfoot , необязательно смешанный с одним или более элементов, поддерживающих сценарий.

Джон
источник
И вы можете использовать th scope=rowgroupвнутри обычного trдля описания каждого tbody. См. «Пример» .
CletusW
12

Допускается не более одного theadи одного , поэтому создавать дополнительные заголовки не следует. В конце концов, in дает значение вашим столбцам, например, «время дня», «температура», «количество кошек в огне».tfoot ththead

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

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

Зета
источник
5
«Если записи в вашем списке связаны, они все должны быть в одной таблице, и вы должны предоставить подходящий заголовок для отображения этой связи» - я думаю, что повторение одного и того же заголовка в очень длинной таблице иногда было бы желательно, чтобы пользователь не нужно прокручивать назад вверх, чтобы вспомнить, что это за столбцы. Конечно, есть и другие решения для этого (например, JavaScript для использования «липкого» заголовка таблицы или CSS для элементов строки таблицы, чтобы сделать ее визуально отличной от других строк).
Майк
5

Я считаю, что это просто idатрибуты. Они должны быть уникальными, но на самом деле вы можете повторно использовать их на той же странице, и вы все равно можете выбрать их. Тем не менее, то, что это возможно, не означает, что это нужно делать.

Я бы не рекомендовал этого.

Джастин
источник
3
Нет ничего плохого в том, чтобы иметь более одного <tbody>, но согласно спецификации их может быть только один <thead>и один <tfoot>.
Pointy
Насколько я могу судить, он вообще не предлагал этого делать. Сказать, что в браузере работает?
AlbertEngelB
@Sebas Первое предложение говорит о том, что вы можете добавить больше, чем на, как и идентификатор, но не должны.
Джастин
@ Себас Лучше? Иногда то, что у меня в голове, яснее, чем то, что я записал: S
Джастин
Нет, я полностью прошу прощения, это моя вина. Ура!
Себас