3

<th>どのテーブルにも必要ですか?テーブルに見出しがなくても?

テーブルには他に 3 つのタグ<thead> <tbody> <tfoot>があり、テーブル フッターに何もなくてもすべて使用する必要があります。Firefox はデフォルトで、これらすべてをコードに追加します。

そしてそれは必要ですか、<th>常にあるべきです<thead>

そして、クライアントから受け取ったコンテンツに見出しがあり、見出しがテーブルの外からのものであるが、テーブルに関連している場合、テーブルにその見出しをどのように配置する必要がありますか

上表の通り

<h3>Heading of table<h3>
<table>......</table>

表の見出しとして

<table>
<thead><tr rowspan=3><th>Heading of table</th></tr></thead>

または表のキャプションとして

<table>
<caption> Heading of table</caption>

スクリーン リーダーに適しており、意味的に正しいのはどれですか?

4

7 に答える 7

14

HTML DTDによると、これは HTML テーブルのコンテンツ モデルです。

<!ELEMENT TABLE - -
     (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)>
<!ELEMENT CAPTION  - - (%inline;)*     -- table caption -->
<!ELEMENT THEAD    - O (TR)+           -- table header -->
<!ELEMENT TFOOT    - O (TR)+           -- table footer -->
<!ELEMENT TBODY    O O (TR)+           -- table body -->
<!ELEMENT COLGROUP - O (COL)*          -- table column group -->
<!ELEMENT COL      - O EMPTY           -- table column -->
<!ELEMENT TR       - O (TH|TD)+        -- table row -->
<!ELEMENT (TH|TD)  - O (%flow;)*       -- table header cell, table data cell-->

したがって、これは不正な構文です。

<thead><th>Heading of table</th></thead>

そのはず:

<thead><tr><th>Heading of table</th></tr></thead>

<th>要素はどこにも必要ありません。<td>これらは、表の行で使用できる2 つのセル タイプ (もう 1 つは ) の 1 つにすぎません。A<thead>は、1 つ以上の行を含めることができるオプションのテーブル セクションです。

編集:使用する理由について<thead>は、いくつかの理由があります。

  1. セマンティック:テーブルのコンテンツと「メタデータ」を区別しています。これは、列ヘッダーとデータ行の間を区切るために最もよく使用されます。
  2. アクセシビリティ:スクリーン リーダーを使用するユーザーがテーブルの内容を理解するのに役立ちます。
  3. 画面以外のメディア:複数ページの表を印刷すると、各ページの上部にコンテンツを配置できる場合があります。<thead>これにより、人々は数ページをめくることなく列の意味を理解できます。
  4. スタイリング:<tbody> CSS は、要素、<thead>要素、両方、またはその他の組み合わせに適用できます。セレクターを書くための何か他のものを提供します。
  5. Javascript:これは、jQuery および同様のライブラリを使用している場合によく発生します。追加情報は、コードを記述するのに役立ちます。

(5) の例として、次のようにします。

$("table > tbody > tr:nth-child(odd)").addClass("odd");

<thead>要素は、それらの行がそのようにスタイルされないことを意味します。または、次のようにすることもできます。

$("table > tbody > tr").hover(function() {
  $(this).addClass("hover");
}, function() {
  $(this).removeClass("hover");
});

と:

tr.hover { background: yellow; }

これも行を除外し<thead>ます。

最後に、これらの同じ議論の多くは、<th>要素よりも<td>要素を使用することに適用されます。このセルはデータではなく、ある種のヘッダーであることを示しています。<thead>多くの場合、このようなセルは、テーブルの構造と性質に応じて、セクション内の 1 つ以上の行にグループ化されるか、各行の最初のセルになります。

于 2010-02-17T02:59:26.940 に答える
5

<th>表形式のデータを表示している場合は、s を使用します。列ごとに 1 つ使用します。通常のユーザーにとっては便利で、スクリーン リーダーにとって不可欠です。<th>レイアウト目的でテーブルを使用している場合(または他の悪意のあるスキーム...)、 s を使用しないでください。

于 2010-02-17T03:06:22.883 に答える
3

いいえ、必要ありません。しかし、右を使用しているようには見えません。通常、各列に 1 つずつあります。正しく使用された th の簡単な例は次のとおりです。

<table>
<tr><th>Breed</th><th>Name</th></tr>
<tr><td>Pekingese</td><td>Pluto</td></tr>
<tr><td>Lab</td><td>Buddy</td></tr>
</table>

次のこともできます。

<table>
<thead><tr><th>Breed</th><th>Name</th></tr></thead>
<tr><td>Pekingese</td><td>Pluto</td></tr>
<tr><td>Lab</td><td>Buddy</td></tr>
</table>
于 2010-02-17T02:59:10.903 に答える
0

答えは

はい!

テーブルを使用して表形式のデータを表示している場合

表形式のデータが行と列に編成されているのには理由があります。テーブル セル内のデータムの意味は、それが表示される列と行の意味によって定義されます。

データのみを含むセルとは別に、行と列に意味を与えるセルを識別することが重要です。

たとえば、次の表は意味のある情報をまったく伝えていません。

34 56 90 15
45 65 85 30
50 55 70 35

数値は、行と列に名前が付けられている場合にのみ意味を持ちます。これらの名前は、次を使用してマークアップされ<th>ます。

    2 月 5月 8月 11月
ITH 
JFK 
IST

もちろん、これらの数字が何を意味するのかはまだわかっていません<caption>

選択した空港の月ごとの平均気温
    2 月 5 月 8 月 11 月
ITH 
JFK 
IST

最後に、測定単位、データ ソースなどの詳細に注意することが重要です。そのような情報は通常、表のフッターに記載されています。

選択した空港の月ごとの平均気温
    2 月 5 月 8 月 11 月
ITH 
JFK 
IST
°Fでの温度。出典: Publication #456 MNMO

に表のタイトルが入り<caption>ます。およびセクションは<thead><tfoot>テーブルが大きくなる場合に特に役立ちます。例については、大きな HTML テーブルを印刷するときに改ページを処理する方法を参照してください。

を使用<colgroups>して、論理的に関連するデータをグループ化できます。

于 2010-02-17T03:20:05.673 に答える
0

利点はセマンティクスです。は、表ヘッダー<th>意味します。これを使用して、列のヘッダーをマークアップします。通常は.<thead>

于 2010-02-17T03:11:12.423 に答える
0

データを最もよく表しているものを使用したいと考えています。

<caption>テーブル全体を説明します。 thは、通常 1 つの列を記述するために使用される単一のセルを作成します (ただし、行見出しにも使用できます)。

theadtfoot、およびtbody。all は使用でき、使用する場合はその順序であり、thead1 つと 1 つしかない場合はすべてオプションですtfoot(ただし、複数のtbody.仕様によると、それらはオプションです。

thtrがどこにあるかに関係なく、任意の内部に表示できますtr

于 2010-02-17T03:00:19.777 に答える
0
<table>
     <tr>
        <td>text</td>
     </tr>      
</table>

これは私が考えることができる最小限のテーブルです。

于 2010-02-17T03:01:17.217 に答える