hidden
HTML5 には、コンテンツを非表示にするために使用できる新しいグローバル属性 があります。
<article hidden>
<h2>Article #1</h2>
<p>Lorem ipsum ...</p>
</article>
CSS にはdisplay:none
、コンテンツを非表示にするためにも使用できるルールがあります。
article { display:none; }
見た目上は同一です。意味的にはどう違うのでしょうか? 計算上はどう違うのでしょうか?
どちらをいつ使用するかについては、どのようなガイドラインを考慮する必要がありますか?
ティア。
編集: @newtron の回答 (下記) に基づいて、さらに検索しました。このhidden
属性は昨年激しく論争され、(どうやら) HTML5 仕様にかろうじて取り入れられました。冗長で目的がないと主張する人もいました。私が知る限り、最終的な評価は次のとおりです。Web ブラウザーのみを対象としている場合は、違いはありません。(あるページでは、Web ブラウザーはかつてdisplay:none
hidden 属性を実装していたと主張していました。) ただし、アクセシビリティを考慮している場合 (たとえば、コンテンツがスクリーン リーダーで読み取られることを期待している場合)、違いがあります。CSS ルールはdisplay:none
Web ブラウザーからコンテンツを非表示にする可能性がありますが、対応する aria ルール (例、aria-hidden="false"
) はコンテンツを読み取ろうとする可能性があります。したがって、@newtron の回答が正しいことに同意しますが、(おそらく) 私が望むほど明確ではないかもしれません。@newtron、ご協力ありがとうございます。
ベストアンサー1
hidden
主な違いは、プレゼンテーションに関係なく、要素が常に非表示になることです。
別のプレゼンテーションで正当に表示できるコンテンツを非表示にするために、hidden 属性を使用しないでください。たとえば、タブ付きダイアログでパネルを非表示にするために hidden を使用するのは誤りです。タブ付きインターフェイスは単なるオーバーフロー プレゼンテーションの一種であるためです。すべてのフォーム コントロールをスクロール バー付きの 1 つの大きなページに表示することもできます。この属性を使用して 1 つのプレゼンテーションのコンテンツのみを非表示にすることも同様に誤りです。非表示としてマークされているコンテンツは、たとえばスクリーン リーダーを含むすべてのプレゼンテーションで非表示になります。
http://dev.w3.org/html5/spec/Overview.html#隠し属性
CSS はさまざまなメディア/プレゼンテーション タイプをターゲットにできるため、display: none
特定のプレゼンテーションに依存します。たとえば、一部の要素はdisplay: none
デスクトップ ブラウザーで表示すると表示されますが、モバイル ブラウザーでは表示されない場合があります。または、視覚的には非表示になっていても、スクリーン リーダーでは引き続き使用できます。