- ベストアンサー
テーブルの正しい雛形を教えてください。
<table> <tr><td>aaa</td><td>bbb</td></tr> <tr><td>ccc</td><td>ddd</td></tr> </table> これってダメな例なんですよね? いつもこれでテーブルを作っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんなところで聞いたって正確で正しい情報は得られない。まず何よりも先に仕様書を調べること!! ⇒表( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html ) 11.2.1 TABLE要素( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#edef-TABLE ) には、 <!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> と書かれている。 (注)?は0個または1、*は0個以上、+はひとつ以上と言う意味、|は「又は」ですから 要素 TABLEは CAPTION? CAPTION は、存在しないか1つのみ (COL*|COLGROUP*) COLかCOLGROUPを0個以上--なくても良いし、いくつあっても良い THEAD? THEADは、存在しないか1つのみ TFOOT? THEADは、存在しないか1つのみ TBODY+ TBODYは、【ひとつ以上】すなわち必須!! と書かれています。 CAPTION,THEAD,TFOOTなどそれぞれの要素は、 11.2.2 表題: CAPTION要素( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#edef-TABLE ) 11.2.3 行グループ: THEAD、 TFOOT、及びTBODY要素( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.2.3 ) などに詳しく書かれています。 CAPTIONは、最初に書け!!、THEAD,TFOOTはTBODYより前・ すなわち、<table>に続いて、<tr>は書くことは出来ません。tdが置けるのは <!ELEMENT THEAD - O (TR)+ <!ELEMENT TFOOT - O (TR)+ <!ELEMENT TBODY - O (TR)+ ですから、正式に記述すると <table summary="この表の言葉での説明を書く" border="1"> <caption>今月の予定</caption> <thead> <tr> <th abbr="Sun">日曜</th><th abbr="Chu">火曜</th>・・・<th abbr="Sat">土曜</th> </tr> </thead> <tfoot> <tr> <th abbr="Sun">日曜</th><th abbr="Chu">火曜</th>・・・<th abbr="Sat">土曜</th> </tr> </foot> <tbody><!-- TBODY開始タグは、表が本体をただ1つだけ含んでいてヘッダもフッタも含まないという場合を除き、常に必要である。 --> <tr> <td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5<td><td>6</td> </tr> </tbody> </table> 最低限ですますなら <table summary="この表の言葉での説明を書く" border="1"> <tr> <th abbr="Sun">日曜</th><th abbr="Chu">火曜</th>・・・<th abbr="Sat">土曜</th> </tr> <tr> <td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5<td><td>6</td> </tr> </table> ※ただひとつの本体しか含まず、THEAD,TFOOTも含まないのでTBODYは省略できる。 になります。 summaryは、「表のsummary(要約)をユーザが得られるようにする。 著者は、非視覚系ユーザエージェントのユーザにも理解しやすいよう、表の内容と構造に関する要約を提供する必要がある。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#adef-summary )」 HTML5では必須でなくなりました。 border="1"は、スタイルシートを理解しないブラウザのために、通常は書いておきます。 >これってダメな例なんですよね? そのマークアップ自体は、summary属性がないことをのぞき特に誤りと言うわけではありませんが、デザインや配置のために、本来表でない物をtableでマークアップするのは、文法以前に誤りです。 ・単に文書内容を整形する目的だけで表を用いるべきでない。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/tables.html#h-11.1 ) ・ページレイアウトの目的で表を用いる。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/styles.html#h-14.1 )
その他の回答 (2)
- Ogre7077
- ベストアンサー率65% (170/258)
とくに駄目な点が見つかりません HTML仕様的にも ブラウザ実装的にも 現実の作業効率的にも 有効な雛形だと思います。 もっと厳密な雛形にしたいなら <table> <caption> cap </caption> <thead> <tr><th> A </th><th> B </th></tr> </thead> <tbody> <tr><td> A1 </td><td> B1 </td></tr> <tr><td> A2 </td><td> B2 </td></tr> </tbody> </table> もっとテキスト編集しやすい雛形にしたいなら <table> <thead> <tr> <th> A <th> B <tbody> <tr> <td> A1 <td> B1 <tr> <td> A2 <td> B2 </table> 閉じタグは省略しても問題ありません http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#syntax-tag-omission
お礼
ご回答ありがとうございます。
- yambejp
- ベストアンサー率51% (3827/7415)
>これってダメな例なんですよね? なぜそう思ったかによります。 特に書式としては問題ありません。 あえていえば、表ですからほとんどの場合見出しがあるはずです それを明示的に処理するためにtheadやtbodyをわけたり、thをつかったりします またテーブルにはsummaryをつけることが望ましいとされています。 列ごとに属性をつける場合はcolやcolgroupを設定してもよいかもしれません <style> table{border-collapse:collapse;} td,th{border:1px solid #000000;} col#col1{background-Color:#ffff00;} col#col2{width:200px;} </style> <table summary="内容説明"> <col id="col1"> <col id="col2"> <thead> <tr><th>見出し1</th><th>見出し2</th></tr> </thead> <tbody> <tr><td>aaa</td><td>bbb</td></tr> <tr><td>ccc</td><td>ddd</td></tr> </tbody> </table>
お礼
ご回答ありがとうございます。
お礼
ご回答ありがとうございます。