纯 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 而不是上面给出的(参见小提琴):
#submenu .options a {display: block;}
.options > div:not(#opt1) {display: none}
.options > :target ~ #opt1 {display: none;}
#submenu .options > div:target {
display: block;
}