非表示属性(HTML5)とdisplay:noneルール(CSS)の違いは何ですか?


110

HTML5には、hiddenコンテンツを非表示にするために使用できる新しいグローバル属性があります。

<article hidden>
   <h2>Article #1</h2>
   <p>Lorem ipsum ...</p>
</article>

CSSにはdisplay:noneルールがあり、コンテンツを非表示にするためにも使用できます。

article { display:none; }

見た目は同じです。意味的に違いは何ですか?計算的に?

どちらを使用するかについて、どのようなガイドラインを検討する必要がありますか?

TIA。

編集:@newtronの応答(下記)に基づいて、さらに検索を行いました。このhidden属性は昨年激しく争われ、(どうやら)HTML5仕様にはほとんど入っていませんでした。一部は冗長であり、目的がないと主張した。私が言えることから、最終的な評価は次のとおりです。私がWebブラウザーのみを対象にしている場合、違いはありません。(1つのページでは、Webブラウザーdisplay:noneが非表示属性を実装するために使用されたとさえ主張していました。)しかし、アクセシビリティを検討している場合(たとえば、コンテンツがスクリーンリーダーで読み取られることを期待している場合)、違いがあります。CSSルールdisplay:noneは私のコンテンツをWebブラウザーから隠すかもしれませんが、対応するariaルール(例えば、aria-hidden="false")それを読もうとするかもしれません。したがって、私は今、@ newtronの答えが正しいことに同意します。あなたの助けをありがとう@newtron。


4
hidden属性が存在することさえ知りませんでしたが、構造/表示の分離に違反しているように思われるため、確かに良い質問です。
Waldheinz、2011

この属性のHTML5仕様をまだ読んでいない人のために: w3.org/TR/html5/editing.html#the-hidden-attribute
james.garriss


@Yigitを読んでください。また、1年以上経過しています。そして隠されたものはまだスペックにあります。それは、提案が改宗者を獲得していないことを私に示します。
james.garriss 2011

編集ありがとうございます。すみません、はっきりしていませんでした!上記で追加した情報は素晴らしいです。+1
newtron

回答:


63

主な違いは、hidden要素がプレゼンテーションに関係なく常に非表示になることです。

hidden属性を使用して、別のプレゼンテーションで正当に表示できるコンテンツを非表示にすることはできません。たとえば、タブ付きインターフェイスは単なるオーバーフロープレゼンテーションの一種であるため、タブ付きダイアログでパネルを非表示にするために非表示を使用することは正しくありません。スクロールバーを備えた1つの大きなページにすべてのフォームコントロールを表示することもできます。この属性を使用して1つのプレゼンテーションからのみコンテンツを非表示にすることも同様に正しくありません。何かが非表示としてマークされている場合、スクリーンリーダーなどのすべてのプレゼンテーションから非表示になります。

http://dev.w3.org/html5/spec/Overview.html#the-hidden-attribute

CSSはさまざまなメディア/プレゼンテーションタイプをターゲットにできるためdisplay: none、特定のプレゼンテーションに依存します。たとえばdisplay: none、モバイルブラウザではなく、デスクトップブラウザで表示したときに一部の要素が含まれる場合があります。または、視覚的に非表示にしてもスクリーンリーダーで使用できます。


1
隠された切り札が表示されるということですか?もしそうなら、それはその目的が単にプレゼンテーションを上書きすることであると言っています。うーん。
james.garriss 2011

1
私の推測では、はい、隠された切り札が表示されます。しかし、私は実際にそれを試していません。CSSがそれを上書きすることができるなら、それはかなり無意味に見えるでしょう。
newtron

2
セマンティクスが勝ちます。存在しない場合は、ドキュメントレベルでドキュメントフローから削除します。それがドキュメントフローの一部である必要があるが、通常の場合は、ビジュアルエクスペリエンスの一部にしたくない場合は、コスメティックレイヤーで処理します。一部のエージェントはCSSを解析しようとしますが、何かがSEENではないと判断した場合はまったく出力しません。これは異常な行動だと思いますが、知っておくと役に立ちます。

6
(ジェームズ・garris、@newtron @)ここにコメントの一部に関連して、に応じてdeveloper.mozilla.org/en-US/docs/Web/HTML/Global_attributes/...行くフィギュア:-) - 、ディスプレイは実際に隠された切り札
ジュルコゴスポネティッチ2016

2
非表示属性のMDNページで見つけた1つの重要な違い:「非表示属性を持つ要素のCSS表示プロパティの値を変更すると、動作が上書きされます。たとえば、要素スタイルの表示:フレックスは非表示属性の存在にもかかわらず表示されます。」
mohsinulhaq
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.