9

表に表本体がある場合、表の行 ( <tr>) は表本体 ( <tbody>) 内にある必要がありますか、それとも表本体の外に存在できますか?

<table>
    <tr>
      <td colspan='2'>...</td>
    </tr>

    <tbody>
      <tr>
        <td>...</td>
        <td>...</td>
      </tr>
    </tbody>

    <tr>
      <td colspan='2'>...</td>
    </tr>

    <tbody>
      <tr>
        <td>...</td>
        <td>...</td>
      </tr>
    </tbody>

</table>
4

5 に答える 5

7

Terrill Thomsonが言ったこととは反対に、<tr>タグの外側に<thead>タグが<tfoot>あり<tbody>、タグの内側にあるテーブルは、 W3C MarkupValidationService<table>に対して検証されます。

このドキュメントは、HTML4.01Transitionalとして正常にチェックされました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
  <head>
  </head>
  <body>
    <table>
      <thead>
        <th colspan="2">head1</th>
        <th>head2</th>
      </thead>
      <tfoot>
        <th colspan="2">foot1</th>
        <th>foot2</th>
      </tfoot>

      <tr><td colspan="3">this row is outside of thead and tfoot</td></tr>

      <tbody>
        <tr>
          <td>1-1</td>
          <td>1-2</td>
          <td>1-3</td>
        </tr>
        <tr>
          <td>2-1</td>
          <td>2-2</td>
          <td>3-3</td>
        </tr>
        <tr>
          <td>3-1</td>
          <td>3-2</td>
          <td>3-3</td>
        </tr>
      </tbody>
  </body>
</html>
于 2012-08-01T20:14:40.073 に答える
6

いいえ、 は<tr><thead><tbody>または<tfoot>それらのいずれかにある必要はありません。

于 2011-05-03T16:56:26.173 に答える
1

<tbody>テーブルに(テーブル ヘッダー) または(テーブル フッター) 要素<table>が含まれている場合、の本文をマークするために使用されます。テーブルにこれらの要素が含まれていない場合は、自由に使用しないでください。<thead><tfoot><tbody>

正しい使い方は次のとおりです。

<table>
<thead><tr><th>Item          </th><th>Cost </th></tr></thead>
<tbody><tr><td>Stack Overflow</td><td>Free </td></tr>
       <tr><td>Something cool</td><td>$1.00</td></tr></tbody>
</table>

テーブルへの HTML4 仕様

于 2011-05-03T17:02:02.017 に答える
1

<tr>の外側にある場合<tbody>、ページは検証されません: http://validator.w3.org

他の人が指摘したように、または<tbody>を使用していない限り、オプションです。後者の 2 つの要素を使用する主な理由は、長い表を印刷する場合に各ページでヘッダーとフッターが繰り返されるようにするためです。<thead><tfoot>

カレンダーのようなものを作成しているように思えます。そこでは、<th>(日付など) と<td>(その日付のイベントなど) の行を交互に並べたいと考えています。その場合は、交互の行を<thead>andでラップしない<tbody>でください。そうすると、ページを印刷するときにブラウザが混乱する可能性があります。グループ化要素をそのままにしておくと、テーブルが検証されます。ただし、一部のスクリーン リーダーは、そのマークアップによって混乱し、ヘッダーの一番上の行をその下のすべてのセルに適用する場合があります。このような複雑なテーブルの場合は、スクリーン リーダーがテーブルの構成を確実に理解できるように、マークアップを追加する必要があります。アクセス可能なマークアップを含むテーブルを次に示します。

<table summary="A brief description of how the table is organized, for screen reader users">
  <tr>
    <th colspan='2' id="header1">...</th>
  </tr>
  <tr>
    <td headers="header1">...</td>
    <td headers="header1">...</td>
  </tr>
  <tr>
    <th colspan='2' id="header2">...</th>
  </tr>
  <tr>
    <td headers="header2">...</td>
    <td headers="header2">...</td>
  </tr>
</table> 

または、データを複数のテーブルに編成できるかどうか、またはスクリーン リーダー ユーザーにとって使いやすい代替バージョンを提供できるかどうかを検討することもできます。たとえば、イベント カレンダーを追加でイベントのリストとして表示できます。

于 2011-05-09T16:27:59.847 に答える
0

<tbody> はオプションなので、答えは「はい <tr> は外に出てもかまいません」です - http://www.w3.org/TR/html4/struct/tables.html#h-11.2.3を参照してください。

于 2011-05-03T17:01:07.227 に答える