我正在尝试制作一个带有导航功能的网页,如下所示:http://www.rex-ny.com/您点击一个列表项并显示其子项目。
我可以悬停,但我不知道如何在不悬停时让它停留。
最简单的事情似乎是最难做到的。
<ul id="menu">
<li><a href="#">Menu 1</a>
<ul>
<li><a href="#">Item A</a></li>
<li><a href="#">Item B</a></li>
<li><a href="#">Item C</a></li>
</ul>
</li>
<li><a href="#">Menu 2</a>
<ul>
<li><a href="#">Item A</a></li>
<li><a href="#">Item B</a></li>
<li><a href="#">Item C</a></li>
</ul>
</li>
<li><a href="#">Menu 3</a>
<ul>
<li><a href="#">Item A</a></li>
<li><a href="#">Item B</a></li>
<li><a href="#">Item C</a></li>
</ul>
</li>
</ul>
由于
这是一个jsfiddle http://jsfiddle.net/phzuC/
答案 0 :(得分:4)
使用tabindex
DEMO http://jsfiddle.net/kevinPHPkevin/phzuC/2/
#menu li > ul {
display:none;
}
#menu li:focus > ul {
display:block;
}
li {
outline: 0;
}
<强> EDITED 强>
如果您需要它,这是一个jQuery解决方案。它使子菜单保持打开状态,并且实现起来很简单。 11行代码。
DEMO http://jsfiddle.net/kevinPHPkevin/phzuC/5/
$(document).ready(function() {
$(".nav-top > li").click(function(e) {
if($(this).find('ul').hasClass('expanded')) {
$(this).find('ul').removeClass('expanded').hide();
} else {
$(this).find('ul').addClass('expanded').show();
}
});
$('.nav-top a').click(function(e){
e.preventDefault();
});
});
答案 1 :(得分:0)
这是另一个仅使用CSS的解决方案:
参考:
基本行为CSS(该演示具有更多样式以删除默认列表缩进/项目符号):
.sideMenu input[type='radio'],
.sideMenu input[type='checkbox'] {
display: none;
}
.sideMenu input[type='radio'] + ul,
.sideMenu input[type='checkbox'] + ul {
position: relative;
display: none;
}
.sideMenu input[type='radio']:checked + ul,
.sideMenu input[type='checkbox']:checked + ul {
display: block;
}
HTML(可以任意深入):
<nav class="sideMenu">
<ul>
<li>
<label for="menu1">Menu 1</label>
<input id="menu1" type="checkbox" name="menu1">
<ul>
<li><a href="#">Item A</a></li>
<li><a href="#">Item B</a></li>
<li><a href="#">Item C</a></li>
</ul>
</li>
<!-- repeat -->
</ul>
</nav>