Czy wiele elementów <thead> / <tbody> w tabeli jest prawidłowe?

82

Wyobraź sobie listę list podobnych do tej:

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

Teraz zapominając o całym argumencie „tabele są dla danych, a nie projektu”, chciałem wyświetlić pojedynczą tabelę dla listi mieć osobne <thead>i <tbody>dla każdego wpisu list.

Czy jest to technicznie poprawne? To działa w przeglądarce, ale moje zmysły pająka mrowi na tym .

AlbertEngelB
źródło
1
Zdecydowanie możesz mieć wiele ciał, musiałbym sprawdzić specyfikację, aby dowiedzieć się o thead.
Kevin B
2
@KevinB: IIRC najwyżej jeden thead i jeden tfoot: w3.org/TR/html-markup/table.html#table
Zeta
1
@unor Moje pytanie dotyczy wielu elementów <thead>i <tfooter>, a nie elementów <tbody>. Nie są takie same i są podyktowane odrębnymi zasadami.
AlbertEngelB
@ Dropped.on.Caprica: Ach tak, tęskniłem za tym, że chciałeś mieć wiele thead elementów. Wycofałem głosowanie.
unor

Odpowiedzi:

120

Możesz mieć tyle <tbody>elementów, ile chcesz, ale nie więcej niż jeden każdego <thead>i <tfoot>. Odniesienie :

Model treści:

W tej kolejności: opcjonalnie element caption, po którym następuje zero lub więcej elementów colgroup, po których opcjonalnie następuje element thead, po którym następuje zero lub więcej elementów tbody lub jeden lub więcej elementów tr, po którym opcjonalnie występuje element tfoot , opcjonalnie zmieszany z jednym lub więcej elementów obsługujących skrypty.

Jon
źródło
I można go używać th scope=rowgroupwewnątrz regularne tropisać każdy tbody. Zobacz „Przykład” .
Cletus W,
12

Dozwolony jest co najwyżej jeden theadi jeden , więc nie powinieneś tworzyć dodatkowych nagłówków. W końcu litera a nadaje znaczenie Twoim kolumnom, np. „Pora dnia”, „temperatura”, „liczba kotów obecnie w ogniu”.tfoot ththead

Jeśli wpisy na liście są ze sobą powiązane, wszystkie powinny znajdować się w tej samej tabeli i należy podać odpowiedni nagłówek, aby wyświetlić tę relację.

Jeśli wpisy są w rzeczywistości niepowiązane, należy podać jedną tabelę dla każdego z nich. Nadal możesz zastosować ten sam CSS na każdym stole, aby uzyskać ładny wynik.

Zeta
źródło
5
„Jeśli wpisy na Twojej liście są powiązane, powinny wszystkie znajdować się w tej samej tabeli i powinieneś podać odpowiedni nagłówek, aby wyświetlić tę relację” - myślę, że powtórzenie tego samego nagłówka w bardzo długiej tabeli byłoby czasami pożądane, więc użytkownik nie musi przewijać z powrotem do góry, aby zapamiętać, jakie są kolumny. Oczywiście istnieją inne rozwiązania tego problemu (np. JavaScript, aby użyć „lepkiego” nagłówka tabeli lub CSS na elementach wierszy tabeli, aby wizualnie różnić się od innych wierszy).
Mike
5

Uważam to za idatrybuty. Mają być unikalne, ale możesz je ponownie wykorzystać na tej samej stronie i nadal możesz je wybrać. To powiedziawszy, tylko dlatego, że można to zrobić, nie oznacza, że ​​należy to zrobić.

Odradzałbym to.

Justin
źródło
3
Nie ma nic złego w posiadaniu więcej niż jednego <tbody>, ale zgodnie ze specyfikacją może być tylko <thead>jeden <tfoot>.
Pointy
Z tego, co wiem, wcale nie sugerował, żeby to robić. Mówisz tylko, że zadziałało w przeglądarce?
AlbertEngelB
@Sebas Pierwsze zdanie mówi, że możesz dodać więcej niż on, tak jak id, ale nie powinieneś.
Justin
@Sebas Better? Czasami to, co mam w głowie, jest jaśniejsze niż to, co zapisałem: S
Justin
Nie, całkowicie przepraszam, wina była moja. Twoje zdrowie!
Sebas