做界面有时需要使用到伸缩的两级菜单,下面有两种写伸缩菜单的方法。
第一种方法:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title></title>
<style type="text/css">
#navigation>ul{
list-style-type: none;
margin: 0;
padding: 0;
}
#navigation>ul>li{
border-bottom: 1px solid #ed9f9f;
}
#navigation>ul>li>a{
text-decoration: none;
background-color: red;
padding: 5px 5px 5px 0.5em;
display: block;
border-left: 12px solid #711515;
border-right: 1px solid #711515;
}
#navigation>ul>li>a:link,#navigation>ul>li>a:visited {
background-color: #c11136;
color: #fff;
}
#navigation>ul>li>a:hover{
background-color: #990020;
color: #ffff00;
}
/*子菜单样式*/
#navigation>ul>li>ul{
list-style-type: none;
margin: 0;
padding: 0;
}
#navigation>ul>li>ul>li {
border-top: 1px solid #ed9f9f;
}
#navigation>ul>li>ul>li>a{
display: block;
padding: 3px 3px 3px 0.5em;
text-decoration: none;
border-left: 28px solid #a71f1f;
border-right: 1px solid #711515;
}
#navigation>ul>li>ul>li>a:link,#navigation>ul>li>ul>li>a:visited{
background-color: #e85070;
color: #fff;
}
#navigation>ul>li>ul>li>a:hover{
background-color: #c2425d;
color: #ffff00;
}
#navigation ul li ul.myHide{
display: none;
}
#navigation ul li ul.mySHow{
display: none;
}
</style>
</head>
<body>
<div id="navigation">
<ul id="listUL">
<li><a href="#">Home</a></li>
<li><a href="#">News</a>
<ul class="myHide">
<li><a href="#">Lastest News</a></li>
<li><a href="#">All News</a></li>
</ul>
</li>
<li><a href="#">Sports</a>
<ul class="myHide">
<li><a href="#">Basketball</a></li>
<li><a href="#">Football</a></li>
<li><a href="#">Volleyball</a></li>
</ul>
</li>
<li><a href="#">Weather</a>
<ul class="myHide">
<li><a href="#">Today's Weather</a></li>
<li><a href="#">Forecast</a></li>
<li><a href="#">Volleyball</a></li>
</ul>
</li>
<li><a href="#">Contact Me</a></li>
</ul>
</div>
<script>
window.onload = function(){
var ul = document.getElementById("listUL");
var li = ul.childNodes;
var oA;
for(var i=0;i<li.length;i++){
//是li且有ul标签
if(li[i].tagName=="LI"&&li[i].getElementsByTagName("ul").length){
oA = li[i].firstChild; //a标签
oA.onclick = change; //添加点击事件
}
}
}
function change(){
var secondDiv = this.parentNode.getElementsByTagName("ul")[0];
if(secondDiv.className == "myHide"){
secondDiv.className = "myShow";
}
else
secondDiv.className = "myHide";
}
</script>
</body>
</html>
第二种方法:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<title></title>
<style type="text/css">
#navigation>ul{
list-style-type: none;
margin: 0;
padding: 0;
}
#navigation>ul>li{
border-bottom: 1px solid #ed9f9f;
}
#navigation>ul>li>a{
text-decoration: none;
background-color: red;
padding: 5px 5px 5px 0.5em;
display: block;
border-left: 12px solid #711515;
border-right: 1px solid #711515;
}
#navigation>ul>li>a:link,#navigation>ul>li>a:visited {
background-color: #c11136;
color: #fff;
}
#navigation>ul>li>a:hover{
background-color: #990020;
color: #ffff00;
}
/*子菜单样式*/
#navigation>ul>li>ul{
list-style-type: none;
margin: 0;
padding: 0;
}
#navigation>ul>li>ul>li {
border-top: 1px solid #ed9f9f;
}
#navigation>ul>li>ul>li>a{
display: block;
padding: 3px 3px 3px 0.5em;
text-decoration: none;
border-left: 28px solid #a71f1f;
border-right: 1px solid #711515;
}
#navigation>ul>li>ul>li>a:link,#navigation>ul>li>ul>li>a:visited{
background-color: #e85070;
color: #fff;
}
#navigation>ul>li>ul>li>a:hover{
background-color: #c2425d;
color: #ffff00;
}
.myHide{
display: none;
}
/*.mySHow{*/
/*display: none;*/
/*}*/
</style>
</head>
<body>
<div id="navigation">
<ul id="listUL">
<li><a href="#">Home</a></li>
<li><a href="#">News</a>
<ul>
<li><a href="#">Lastest News</a></li>
<li><a href="#">All News</a></li>
</ul>
</li>
<li><a href="#">Sports</a>
<ul>
<li><a href="#">Basketball</a></li>
<li><a href="#">Football</a></li>
<li><a href="#">Volleyball</a></li>
</ul>
</li>
<li><a href="#">Weather</a>
<ul>
<li><a href="#">Today's Weather</a></li>
<li><a href="#">Forecast</a></li>
<li><a href="#">Volleyball</a></li>
</ul>
</li>
<li><a href="#">Contact Me</a></li>
</ul>
</div>
<script src="js/jquery.min.js"></script>
<script>
$(function(){
$("li").find("ul").prev().click(function(){
$(this).next().toggle();
});
$("li:has(ul)").find("ul").hide();
});
</script>
</body>
</html>
第二种方法需要引入jQuery
- prev() 当前标签之前的标签
- next() 当前标签之后的标签
效果图: