html таблиці: thead vs th


155

Схоже (у будь-якому випадку на прикладах на цій сторінці ), якщо ви використовуєте THEAD, вам не потрібно використовувати TH.

Це правда? Якщо так, то які переваги / недоліки THEAD проти TH?

Відповіді:


124

<thead>Тег використовується для групування змісту заголовка в HTML - таблиці. theadЕлемент повинен бути використаний в поєднанні з , tbodyі tfootелементами.

Детальніше: thead

Ви використовуєте <thead>для інкапсуляції цілого рядка (або рядків) для позначення їх як заголовка таблиці. За словами специфікації,

"Цей розділ дозволяє користувачам-агентам підтримувати прокручування тіл таблиці незалежно від голови та стопи таблиці. Коли друкуються довгі таблиці, інформація про голову та ноги таблиці може повторюватися на кожній сторінці, що містить дані таблиці."

<th>з іншого боку, використовується для стилізації певної комірки як осередку заголовка, а не звичайної комірки даних.


22
Я завжди використовую їх обох.

11
Це один стародавній веб-сайт, на який ви посилаєтесь у "Більше: Теда".
masterxilo

дивіться також: Mocilla's doc developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
Adrien Be

3
@masterxilo Що ти очікував? HTML сам по собі є досить давнім.
Дан Бешард

1
@Kano Чи заперечуєте ви, щоб хтось посилався на 30-річний RFC, який все ще використовується? Що має значення, скільки років стоїть сторінка, поки інформація залишається актуальною?
jmbpiano

65

<th>насправді є заміною, <td>коли ви хочете позначати клітинку як осередку заголовка.

Якщо ви хочете використовувати <thead>і <th>не забудьте гніздитися <th>всередині <tr>. Інакше код може бути недійсним.
Приклад:

<table>
  <thead>
    <tr>
      <th>Season</th>
      <th>Goals</th>
      <th>Assists</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>2009-2010</th>
      <td>25</td>
      <td>43</td>
    </tr>
    <tr>
      <th>2011-2012</th>
      <td>40</td>
      <td>20</td>
    </tr>
  </tbody>
</table>


2
Це не відповідає на початкове запитання, це більше доповнення, а замість відповіді має бути коментарем.
Джеральд Шнайдер

7
Я знаю, але у мене занадто низька репутація балів, щоб розмістити коментар, тому я спробував опублікувати відповідь. Вибачте, я винен, але правила цілої служби стеків для мене іноді дивні.
rflw

28
Насправді ця відповідь є єдиною, що показує використання TH та THEAD. +1 для цього!
barrypicker

4
Якщо ви пишете "Перевага thможе бути використана всередині a, theadа також всередині a tbody, обидва елементи корисні у власному контексті". що відповідає на питання ... Джеральд просто вибагливий щодо того, як ви написали відповідь, але насправді це єдина відповідь, яка дала вагомий приклад.
CPHPython

1
Я навіть не знав, що за замовчуванням thвиходить сміливий текст без додаткових CSS, дякую за це!
CPHPython

11

thє більш конкретним, ніж те, що може перебувати всередині thead. thОсередки вказати заголовок відповідних tdосередків. Насправді ви можете додати headersатрибут до tdкомірки, який вказує на ідентифікатор thкомірки (для читачів екрану). Отже th, безпосередньо пов'язане з tds цього стовпця.

Однак, theadможна включити будь-яку інформацію ... зазвичай так, вона включає thклітини, але вона також може включати в себе все, що ви вважаєте за потрібне як інформацію вгорі таблиці (крім підпису, оскільки у неї є власний тег як Ну).



6

<thead>

Рядки таблиць можуть бути згруповані в голову столика, стіл ногу, і один або більше розділи таблиці тіла, використовуючи THEAD, TFOOTі TBODYелементи, відповідно. Цей підрозділ дозволяє користувачам-агентам підтримувати прокручування тіл таблиці незалежно від голови та стопи столу. Коли друкуються довгі таблиці, інформація про голову та ноги таблиці може повторюватися на кожній сторінці, що містить дані таблиці.

Голова та підніжка столу повинні містити інформацію про стовпці таблиці. Тіло таблиці має містити рядки даних таблиці.

Якщо вони присутні, кожен THEAD, TFOOT і TBODY містить групу рядків. Кожна група рядків повинна містити щонайменше один рядок, визначений елементом TR.

<th>

Осередки таблиці можуть містити інформацію двох типів: інформацію заголовка та дані. Ця відмінність дозволяє користувачам-агентам чітко відображати заголовки та комірки даних, навіть за відсутності таблиць стилів. Наприклад, візуальні користувацькі агенти можуть представляти текст комірки заголовка жирним шрифтом. Синтезатори мови можуть надавати інформацію заголовка з чітким голосовим виразом.

Елемент TH визначає комірку, яка містить інформацію заголовка. Користувацькі агенти мають два фрагменти інформації заголовка: вміст елемента TH та значення атрибута abbr. Користувацькі агенти повинні надавати або вміст комірки, або значення атрибута abbr. Для візуальних носіїв останні можуть бути доречними, коли недостатньо місця для візуалізації повного вмісту комірки. Для невізуальних носіїв abbr може використовуватися як абревіатура для заголовків таблиць, коли вони надаються разом із вмістом комірок, до яких вони застосовуються.

Джерело: http://www.w3.org/TR/html4/struct/tables.html


3

Наскільки я можу сказати з досвіду, різниці в візуалізації немає, якщо ви не використовуєте CSS для визначення різниці у візуалізації. <td>Всередині <thead>буде надавати такий же , як <th>всередині <table>або <tbody>.


Елемент thead також містить рядки.
DanMan

1
Я думаю, ти маєш на увазі, що <td>внутрішня частина <thead>рендерінгу - це те саме, що і а <th>, а не те, що <tr>робить.
frabjous

0

Тут немає жорстких правил. <thead>Елемент просто ще один спосіб групувати стовпці і рядки, так само , як <tbody>і <tfoot>є. Таким чином, у вас є більше можливостей для сценаріїв та форматування.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.