HTML5 コードを書くとき、
と
のどちらを書くべきか、 を書くべきか迷ったことはありませんか。 と書くのはなぜ間違っているのでしょうか?とにかく、私はそれに苦労しました、そして、私はこのトピックが実際には私が思っていたよりもはるかに興味深いことに気づきました。
私の研究プロセスに興味がない場合は、「正当性」セクションに直接ジャンプして答えを得ることができます。
コンテンツのない要素は、コンテンツを含めることができない特別な要素です。
などの他の要素には、コンテンツが含まれないことも、別の要素やテキストが含まれることもできます。
より一般的なコンテンツのない要素は次のとおりです:
<エリア<ベース><コマンド> <パラメータ><トラック> これらはすべて既存の内容のない要素です。
は、br にコンテンツを含めることができることを意味するため、正当な HTML ではありません (ただし、
Hello! はまったく意味がありません)。
と
は両方とも非常に一般的です。
次に、コンテンツを含まないタグはSGML には「Null End Tag (NET)」と呼ばれる機能があります。ラベルに単純なテキストのみがある場合、末尾のないラベルを使用すると、ラベルを閉じる必要がなくなります。たとえば、
Quoted textをが含まれていません。)
このロジックに従って、
として解析される場合、
は
として解析されないでしょうか?あなたも私と同じように考えるなら、この構文は愚かだと思うでしょう。 残念ながら、HTML4 仕様の作成者はそうは考えず、それを仕様に書き加えました。ただし、当時のブラウザの製造元がこの構文を気にせず、あまりサポートしていなかったことは明らかです。 (この時点で、ブラウザのメーカーは良いことをしたのかもしれません。) XML (XHTML にも適用可能) 仕様の作成者は、この構文があまり良くないことに気づいたので、単に尾部のないタグの機能を組み込んでいませんでした同時に、コンテンツフリータグの比較的理解しやすい構文も提供します。この構文の名前は「要素のないタグ」で、次のようになります:
。この構文は非常に自然に見えたので、当時のほとんどの開発者はそれが正しい書き方だと考えていました。幸いなことに、HTML は常に改善されており、W3C メンバーは過去に犯した間違いから学んでいます。だからこそ、HTML5 は以前のバージョンと比べて大きな進歩を遂げたのです。
HTML5 の新しい構文を導入する際、W3C は次のように述べました:
HTML5 の構文は HTML4 および XHTML1 と完全な互換性がありますが、SGML のあいまいな HTML4 機能とは互換性がありません。たとえば、末尾タグ ( HTML5 うまくいきました!
(Nice> などの「短いタグ」機能は維持すべきだと思います。これは素晴らしいと思います。しかし、少なくとも HTML はそれほど乱雑ではなくなりました。)
合法性 さて、記事の冒頭の合法性に関する質問に戻りましょう。現在の HTML5 仕様における非コンテンツ タグの説明は次のとおりです。このようなラベルは、以下の表と同じ順序で次のコンポーネントで構成されている必要があります:
「<」文字。
タグ名。
この項目はオプションです。1 つ以上の属性。各属性の前には 1 つ以上のスペースが必要です。
これはオプションであり、1 つ以上のスペースが必要です。
この項目はオプションであり、「/」文字です。この項目はコンテンツのない要素にのみ表示できます。
「>」文字。
最後から 2 番目の部分の「/」文字はオプションであり、実際の意味はありません。したがって、実際には
と
の間に実質的な違いはありません。正しさ
XML や XHTML を好む開発者は、「はい、/ はオプションですが、
のほうが正しいです」と言うかもしれません。 あなたは間違っていると言わなければなりません。実際、内容のないタグ内の / は実際には許容される文法上の誤りであると主張する人もいます。この許容範囲は、すべてのブラウザとパーサーで
と
を同等に扱うためのものです。この点に関しては、Googleのコードスタイルガイドでもcontent-freeタグを閉じないことが明記されています。
デメリット
もちろん、コンテンツのないタグを閉じないことには欠点がありますが、コードをクリーンで簡潔にするという利点をカバーできるとは思いません。
最初の欠点は、開発者はどのタグにコンテンツ タグが含まれていないのかを把握する必要があることです。 がコンテンツのないタグであるかどうかがわからない場合、その終了タグが見つからない場合、このタグを閉じるべきかどうか疑問に思うでしょう。しかし、コンテンツフリータグは全体で数個しかなく、通常、あるタグがコンテンツフリータグであるかどうかは一目でわかります。
2 番目の欠点は、エディターが閉じられていないコンテンツのないタグを適切に処理できない可能性があることです。エディターの開発者は、コンテンツのないタグを理解し、適切な構文の強調表示とコード補完を提供する必要があります。エディターで を記述するとき、エディターはその後に が続かないことを認識している必要があります。
しかし、これらの機能は実装が非常に簡単で、私が知っているエディターはこの側面を非常によくサポートしているため、これは実際には欠点ではありません。
コンテンツフリータグについての私の考え
コンテンツのないタグの概念は実際には HTML から削除できると思います。これらのタグにコンテンツを追加して、その属性の一部を置き換えることができます。
タグを例に挙げます。この属性は、ユーザーが (おそらく物理的な欠陥のため、または使用しているデバイスが画像をサポートしていないために) 画像を表示できないようにするために存在します。についてです (画像が美的理由だけであれば、実際には alt 属性を追加すべきではありません)。
私の質問は、なぜ alt 属性の代わりに のコンテンツを使用しないのですか?次のように書いた方が直感的だと思います:
ドージェの画像。
タグには content という属性もあります。コンテンツの値をタグのコンテンツに直接書き込まないのはなぜでしょうか? は、
したがって、実際に保持すべきコンテンツフリーのタグはほんのわずかですが、W3C は下位互換性を考慮する必要があるため、現状を変更することは依然として非常に困難です。
最終的な考え: <script> タグ </h2> <p> このラベルの意味は非常にシンプルですが、文章が非常に冗長なので、本当に気になります。 <script src="my-script.js"></script>
著者別の最新記事
2023-03-14 15:58:02 1970-01-01 08:00:00 2023-03-15 07:38:01 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00 1970-01-01 08:00:00最新の問題function_exists() はカスタム関数を決定できません Function test () {return true;} if (function_exists ('test')) {echo "テストは関数です";から 2024-04-29 11:01:01032235Google Chromeのモバイル版を表示する方法 こんにちは、先生、Google Chrome をモバイル版に変更するにはどうすればよいですか?から 2024-04-23 00:22:190112376親ウィンドウには出力がありません document.onclick = function(){ window.opener.document.write('私は子ウィンドウの出力です');から 2024-04-18 23:52:34011871