純粋なCSS3ソリューション
これは、セレクターを使用するため(メインメニューをクリックしたときに文字列:target
を変更することも意味します) 、古いブラウザーをサポートする場合は実用的ではありません。url
フィドルを参照してください。
このHTMLを考えると
<div id="main-menu">
<div class="center">
<a id="p1" href="#opt1">Item 1</a>
<a id="p2" href="#opt2">Item 2</a>
<a id="p3" href="#opt3">Item 3</a>
</div>
</div>
<div id="submenu">
<div class="options">
<div id="opt1">
<a id="s1" href="#">Sub Item 1</a>
<a id="s2" href="#">Sub Item 2</a>
<a id="s3" href="#">Sub Item 3</a>
</div>
<div id="opt2">
<a id="s4" href="#">Sub Item 4</a>
<a id="s5" href="#">Sub Item 5</a>
<a id="s6" href="#">Sub Item 6</a>
</div>
<div id="opt3">
<a id="s7" href="#">Sub Item 7</a>
<a id="s8" href="#">Sub Item 8</a>
<a id="s9" href="#">Sub Item 9</a>
</div>
</div>
</div>
<div id="application_area">
<div id="header"></div>
</div>
このCSSはそれを行います(これを使用すると、ページの読み込み時にサブメニューは元々空になります。必要に応じて以下を参照してください)
#submenu .options a {display: block;}
#submenu .options > div {display: none}
#submenu .options > div:target {
display: block;
}
オプション1をページの読み込み時に表示するには
まず、#opt1
divを最後 div
のに移動し.options
、次に上記のCSSの代わりに次のCSSを使用します(フィドルを参照)。
#submenu .options a {display: block;}
.options > div:not(#opt1) {display: none}
.options > :target ~ #opt1 {display: none;}
#submenu .options > div:target {
display: block;
}