bảng html: thead vs th


155

Dường như (theo các ví dụ trên trang này , dù sao đi nữa) rằng nếu bạn đang sử dụng THEAD, bạn không cần phải sử dụng TH.

Điều đó có đúng không? Nếu vậy, những lợi thế / bất lợi của THEAD vs TH là gì?

Câu trả lời:


124

Các <thead>thẻ được sử dụng để nhóm các nội dung tiêu đề trong một bảng HTML. Phần theadtử nên được sử dụng kết hợp với tbodytfootcác phần tử.

Hơn: thead

Bạn sử dụng <thead>để đóng gói toàn bộ một hàng (hoặc hàng) để chỉ định chúng làm Tiêu đề bảng. Theo thông số kỹ thuật,

"Bộ phận này cho phép các tác nhân người dùng hỗ trợ cuộn các thân bàn độc lập với đầu bàn và chân bàn. Khi các bảng dài được in, thông tin đầu và chân bàn có thể được lặp lại trên mỗi trang có chứa dữ liệu bảng."

<th>mặt khác, được sử dụng để định kiểu một ô cụ thể như một ô tiêu đề thay vì một ô dữ liệu thông thường.


22
Tôi luôn sử dụng cả hai.

11
Đó là một trang web cổ mà bạn đã liên kết đến trong "Khác: thead".
masterxilo

xem thêm: Nhà phát triển
Adrien Be

3
@masterxilo Bạn mong đợi điều gì? Bản thân HTML là khá cổ xưa.
Dan Bechard

1
@Kano Bạn có phản đối ai đó liên kết với RFC 30 tuổi vẫn đang được sử dụng không? Điều gì quan trọng là trang này bao nhiêu tuổi miễn là thông tin vẫn còn liên quan?
jmbpiano

64

<th>thực sự là một sự thay thế <td>khi bạn muốn đánh dấu một ô là một ô tiêu đề.

Nếu bạn muốn sử dụng <thead><th>đừng quên làm tổ <th>bên trong <tr>. Nếu không, mã có thể không hợp lệ.
Thí dụ:

<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
Điều này không trả lời câu hỏi ban đầu, nó là một phụ lục và nên là một nhận xét thay vì một câu trả lời.
Gerald Schneider

7
Tôi biết nhưng tôi có điểm danh tiếng quá thấp để đăng bình luận nên tôi đã cố gắng gửi câu trả lời. Tôi xin lỗi, lỗi của tôi nhưng các quy tắc của toàn bộ dịch vụ ngăn xếp đôi khi là lạ đối với tôi.
rflw

28
Trên thực tế, câu trả lời này là người duy nhất cho thấy việc sử dụng TH và THEAD. +1 cho điều đó!
barrypicker

4
Nếu bạn viết "Lợi thế thcó thể được sử dụng bên trong a theadvà cả bên trong a tbody, cả hai yếu tố đều hữu ích trong bối cảnh của chính chúng." trả lời câu hỏi ... Gerald chỉ kén chọn cách bạn viết câu trả lời, nhưng thực tế đây là câu trả lời duy nhất ở đây cung cấp một ví dụ có ý nghĩa.
CPHPython

1
Tôi thậm chí không biết rằng thđược in đậm theo mặc định, mà không cần thêm CSS, cảm ơn vì điều đó!
CPHPython

11

thlà cụ thể hơn những gì có thể nằm trong thead. Một thô là để xác định tiêu đề của các tdô tương ứng . Trong thực tế, bạn có thể thêm một headersthuộc tính vào một tdô trỏ đến id của một thô (đối với trình đọc màn hình). Vì vậy, thcó liên quan trực tiếp đến tds của cột đó.

Tuy nhiên, theadcó thể bao gồm bất kỳ thông tin nào ... thông thường là có bao gồm các thô nhưng nó cũng có thể bao gồm bất kỳ thông tin nào bạn cho là phù hợp như thông tin ở đầu bảng (trừ chú thích, vì điều này có thẻ riêng như tốt).


6

<thead> đặc biệt ở chỗ nó có thể được sử dụng để lặp lại hàng tiêu đề ở đầu trang trong các phiên bản in.


6

<thead>

Hàng bảng có thể được nhóm lại thành một đầu bảng, bảng chân, và một hoặc nhiều phần nội dung bảng, sử dụng THEAD, TFOOTTBODYcác yếu tố tương ứng. Bộ phận này cho phép các tác nhân người dùng hỗ trợ cuộn các thân bàn độc lập với đầu và chân bàn. Khi các bảng dài được in, thông tin đầu và chân bảng có thể được lặp lại trên mỗi trang có chứa dữ liệu bảng.

Đầu bàn và chân bàn nên chứa thông tin về các cột của bảng. Thân bảng nên chứa các hàng dữ liệu bảng.

Khi có mặt, mỗi THEAD, TFOOT và TBODY chứa một nhóm hàng. Mỗi nhóm hàng phải chứa ít nhất một hàng, được xác định bởi phần tử TR.

<th>

Các ô trong bảng có thể chứa hai loại thông tin: thông tin tiêu đề và dữ liệu. Sự khác biệt này cho phép các tác nhân người dùng hiển thị các ô tiêu đề và dữ liệu một cách rõ ràng, ngay cả khi không có biểu định kiểu. Ví dụ, tác nhân người dùng trực quan có thể trình bày văn bản ô tiêu đề với một phông chữ đậm. Bộ tổng hợp giọng nói có thể hiển thị thông tin tiêu đề với một giọng nói riêng biệt.

Phần tử TH xác định một ô chứa thông tin tiêu đề. Tác nhân người dùng có sẵn hai phần thông tin tiêu đề: nội dung của phần tử TH và giá trị của thuộc tính abbr. Tác nhân người dùng phải hiển thị nội dung của ô hoặc giá trị của thuộc tính abbr. Đối với phương tiện trực quan, cái sau có thể phù hợp khi không đủ không gian để hiển thị toàn bộ nội dung của ô. Đối với phương tiện không trực quan, abbr có thể được sử dụng làm tên viết tắt cho các tiêu đề bảng khi chúng được hiển thị cùng với nội dung của các ô mà chúng áp dụng.

Nguồn: http://www.w3.org/TR/html4/struct/tables.html


3

Theo như tôi có thể nói từ kinh nghiệm, không có sự khác biệt nào trong kết xuất trừ khi bạn đang sử dụng CSS để chỉ định sự khác biệt trong kết xuất. Một <td>bên trong của một <thead>sẽ làm cho giống như <th>bên trong của một <table>hoặc một <tbody>.


Một phần tử thead cũng chứa các hàng.
DanMan

1
Tôi nghĩ rằng bạn có nghĩa là <td>bên trong của một biểu <thead>hiện giống như một <th>, không phải là một <tr>.
frabjous

0

Không có quy tắc cứng ở đây. Phần <thead>tử chỉ là một cách khác để nhóm các cột và hàng của bạn, giống như <tbody><tfoot>là. Vì vậy, bạn có nhiều khả năng hơn cho kịch bản và định dạng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.