7.1 hidden 属性
すべての HTML 要素には、hidden コンテンツ属性をセットすることができます。hidden 属性は論理属性です。要素にこの属性が指定されると、その要素が、まだ関連性がない、もしくは、すでに関連性がないことを示すことになります。ユーザーエージェントは、hidden 属性が指定された要素をレンダリングするべきではありません。
次の例では、この属性を使って、ユーザーがログインするまでウェブゲームのメインスクリーンを隠します:
<h1>The Example Game</h1>
<section id="login">
<h2>Login</h2>
<form>
...
<!-- calls login() once the user's credentials have been checked -->
</form>
<script>
function login() {
// switch screens
document.getElementById('login').hidden = true;
document.getElementById('game').hidden = false;
}
</script>
</section>
<section id="game" hidden>
...
</section>
別のプレゼンテーションで表示されうるコンテンツを隠すために、hidden 属性を使ってはいけません。例えば、タブ付きダイアログのパネルを隠すために hidden を使うのは正しくありません。なぜなら、タブ付きインタフェースというのは、一種のオーバーフロー表現にすぎないからです。 つまり、一つの大きなページの中でスクロールバーを使ってすべてのフォーム・コントロールを表示するのと同じようなものです。同様に、ひとつのプレゼンテーションからだけにコンテンツを隠すために、この属性を使うのも正しくありません。つまり、もし何かに hidden がマークアップされたら、それはすべてのプレゼンテーションから隠されることになります。スクリーン・リーダーも例外ではありません。
hidden がない要素は、hidden がある要素にリンクしたり参照するべきではありません。
例えば、hidden 属性がマークアップされたセクションに対して、href 属性を使ってリンクするのは正しくありません。もしそのコンテンツが利用可能または関連性がないのであれば、それにリンクする理由はありません。
同様に、hidden がある説明を参照するために、ARIA の aria-describedby 属性を使うのも正しくありません。セクションを隠すというのは、その時点では誰にも利用可能ではない、または、誰にも関係がない、ということを意味するのです。だから、それは、明らかに、ユーザーが利用できるコンテンツに関する適切なな説明になり得ないのです。
hidden 属性によって隠されたセクションの中にある要素はアクティブなままです。例えば、そのようなセクションにあるスクリプトやフォーム・コントロールでも、それぞれ、実行したりサブミットします。ユーザーに対するプレゼンテーションだけが変わります。
hidden IDL
属性は、同じ名前のコンテンツ属性を反映しなければいけません。
※ 原文:http://www.w3.org/TR/2011/WD-html5-20110113/editing.html#the-hidden-attribute