- ベストアンサー
tdなどの閉じタグは省略しても問題ないか
- tdなどの閉じタグは省略しても問題ないケースがあるのか気になりました。
- 省略した場合にレイアウトが崩れるブラウザや機能的な問題が発生するケースがあるか調査しています。
- また、HTML5ではどのようになっているのかも知りたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
HTML5 でどうなっているのか結構知りたいということであれば, 自分で調べてはどうでしょうか. 他人に聞くよりも確実だと思うのですが.... もちろん HTML5 そのものはまだ確定していないので, 今後変化する可能性があることは念頭に置く必要があります.
その他の回答 (3)
- tiltilmitil
- ベストアンサー率22% (1871/8250)
>・機能・レイアウト以外に省略しないほうがいい理由があるのでしょうか?あるならその理由を具体的に教えてください。 「このタグは省略できたかな、どうだったかな」と迷うぐらいなら「全部つける」にしておいた方がかえって楽。この質問のような悩みも生まれないわけです。
お礼
なるほど。HTML初学者はとりあえずつけとけってことですね。 参考になりました。ありがとうございました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>強いて言うと「ブラウザに計算を強いること」という問題があるのですね。 >(ブラウザによるかもしれませんが) ブラウザにとって、すごく負担になるのは確実です。そのためにXHTMLが推進された経緯があります。また、他のアプリケーションから再利用しにくいのも問題でした。いわゆる整形式ではないですから・・・。 一方で、タブ、改行など空白文字列を読み飛ばすのはまったく負担になりません。 そのために、私はHTMLであっても整形式で書くことにしています。特に長大なHTMLの場合、タブできちんとインデントさせれば、わかりやすいこと。テキストエディタで ^\t\t\t<td>([^<]*<td>$ と、探し出したりするのが簡単、機械的にできる。表の場合、いったんexcelで作成したCSVをPerlでtableに直すときも、処理が機械的に出来る。 とか・・・。 HTML5とHTML4に、このあたりについてはほとんど変わりがありません。新しい要素が追加されたこと。特に構造化を示すタグは要チェックですね。それもあり、数年前から <body> <div class="header"> </div> <div class="section"> ・・・と言う風にしてます。 ★HTML5 における HTML4 からの変更点 ( http://standards.mitsue.co.jp/resources/w3c/TR/html5-diff/ )
お礼
ありがとうございました。
補足
# ブラウザにとって、すごく負担になるのは確実です とのことですが、この点が抽象的でわかりませんでした。 td要素5万のテーブルのレンダリングを実験してみましたが、 IE/FF/Chromeではすべてで省略したほうが速く処理できました。 下記の点を補足で教えてください。 ・根拠はなんですか?書籍?サイト?実績値?予想? ・閉じタグ省略時の負担について参考になる書籍・サイトの紹介など ・負担とは何ですか?処理時間?CPU使用率?メモリ使用量? ・負担になる処理は何ですか?レンダリング処理?DOMアクセス? ・「ブラウザ」とはなんですか?(種類やバージョンなど、あくまでも昔の話なのか今でも問題なのか) よろしくお願いします。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
なぜ省略してもよいかと言うと、 <td>に続いて、</tr>や<td>が来るはずないからです。それらが続いて現れれば、</td>が省略されているとみなされるからです。手で入力するときに楽だから。 DOM上では問題もあります。--HTML5では、そのようなときの解釈についても厳密に定義されますから問題ありませんが、それより前のHTMLでは、ブラウザによって解釈の違いがありえます。 ただ、現在省略可能となっている要素に関しては、問題ありません。ただ、ブラウザに計算を強いることですかね。 私は一切省略しませんが、それは、タグの閉じ忘れ出はなく、階層を忘れてしまうからです。 <table summary="section"> <tbody> <tr> <td> <table> <tbody> <tr> <td> </td> </tr> </tbody> </table> <td> </tr> </tbody> </table> なら、ミスしません。 ・省略するとレイアウトが崩れるブラウザがあるのでしょうか?あるのならブラウザ名・バージョンを教えてください。 ・省略すると機能的に問題が発生するケースがあるのでしょうか?あるのなら具体的な現象、ブラウザ名・バージョンを教えてください。 いずれも、ありません。それがブラウザに対する仕様でもありますから。問題は、誤ったマークアップのときの処理は異なると言うことです。(終了タグが省略可能な場合の省略は 誤っていません)、誤ったマークアップを防ぐためにきちんと閉じる癖をつけるということです。また、以前、HTMLは、HTML4.01が最後の仕様で、今後はすべてXHTMLになるとされていましたから、そうなると閉じる癖を付けておかなければ・・ しかし、世の中はHTML5に向かっています。HTML5では、合わせてXHTMLの仕様も加わりますから、XHTML構文を使用する場合は閉じなければなりません。 ※XHTMLは書くつもりはないのでこの質問の対象外としていいです ですが、XMLから、XSLTを使ってXHTMLに変更するなど、手抜きのためにはXHTML(XML)も知っておいたほうが・・というか、XHTMLのほうが慣れれば作るのは楽ですね。
お礼
レイアウト・機能的に問題が発生することはないとのことで安心しました。 ネット上では特に理由の記述なく「書いたほうがいい」とだけ書いてあるサイトがいくつかあったので。 強いて言うと「ブラウザに計算を強いること」という問題があるのですね。 (ブラウザによるかもしれませんが) # 以前、HTMLは、HTML4.01が最後の仕様で、今後はすべてXHTMLになるとされていましたから # HTML5では、合わせてXHTMLの仕様も加わりますから、XHTML構文を使用する場合は閉じなければなりません。 そうなんですか。今後のHTML5の仕様策定の動向を観察し考慮したいと思います。 # XMLから、XSLTを使ってXHTMLに変更するなど、手抜きのためにはXHTML(XML)も知っておいたほうが XSLTは多少使ったことがありますが、部分的な抽出に使ったことがあるくらいであまりダイナミックに使ったことはありません。 よく使うかどうかは、人によると思いますが今後検討したいと思います。 参考になりました。ありがとうございました。
補足
<table summary="section"> <tr><td> <table> <tr><td><td><td> <tr><td><td><td> </table> </table> 私の場合こんな感じで書くことが多いです。 階層が少なくなり、またシンプルにコンパクトに書けるので。 コーディング基準に明記されてる場合でもない限りは自由なので 人によって好みが大きく分かれるところですよね。
お礼
今まで私は、閉じタグが必要かどうかなどはDTDをみて判断していたのですが HTML5ではDTDがないとのことで何を参照していいのか分からない状態でした。 しかしご提示していただいたページではっきりと把握することができました。 HTML4系と同じで閉じタグは省略可となっているようですね。 「This is a work in progress!」とのことではありますが…。 参考になりました。ありがとうございました。
補足
今回の質問を通して以下のことが分かりました。 ・HTML5でも省略可とされている ・省略するとブラウザの処理速度が向上する(IE8/FF/Chrome) ・ファイルファイズが小さくなり当然ネットワーク転送速度も速くなる ・閉じタグ可の要素が分からない人はとりあえず省略しないほうがいい ・遅くなるブラウザも昔はあったのかも(未確認) ・解釈のできないブラウザも昔はあったのかも(未確認) 皆さんありがとうございました。