效果图: 兼容ie678 火狐
<style>
body,ul{
margin:0;padding:0;
}
a{
text-decoration:none;
}
/*清除样式,使各浏览器兼容ul样式*/
ul{
list-style:none;
}
/*一级导航的宽度和高度*/
#nav{
height:90px;
width:100%;
}
/*导航里的所有li 都左侧浮动*/
#nav li{
float:left;
height:80px;
border-right: 1px solid #131313;
background:green;
position: relative; /*该属性用于二级导航,使二级导航里li的绝对定位生效*/
}
#nav li a{
color:white;
width:160px;
display:block;/*使a元素块级化,用于制作hover状态下的效果*/
background:silver;
padding:0 30px;
line-height:80px;/*设置line-height 文字垂直居中*/
}
/*hover效果*/
#nav li a:hover{
background-color:red;
}
#nav ul{
position:absolute;/*使二级导航脱离文档流,不占用空间*/
left:0;
width:160px;/*指定二级导航的宽度,将float的li限定在一列中*/
}
</style>
<body>
<div style="background:gold">
<ul id="nav">
<li><a href="#">国内电影</a>
<ul>
<li><a href="#">风月</a></li>
<li><a href="#">动作</a></li>
</ul>
</li>
<li><a href="#">国外电影</a>
<ul>
<li><a href="#">激情</a></li>
<li><a href="#">速度</a></li>
</ul>
</li>
<li><a href="#">综艺电影</a></li>
<li><a href="#">科幻电影</a></li>
<li><a href="#">生活电影</a></li>
<li><a href="#">手机电影下载</a></li>
<li><a href="#">爱情</a></li>
<li><a href="#">喜剧电影</a></li>
</ul>
</div>
<!-- 这个div 用于测试导航下边的内容。 因为二级导航的position:absolute;使二级导航脱离文档流,所以二级导航不占用空间。 下面的内容紧贴导航-->
<div> hello world adfafasdfsssssssssssssss<br/>
hello world adfafasdfsssssssssssssss<br/>
hello world adfafasdfsssssssssssssss<br/> hello world adfafasdfsssssssssssssssasdfasfsdafsaffffffffffffffffffdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br/>
hello world adfafasdfsssssssssssssss<br/> hello world adfafasdfsssssssssssssss<br/> hello world adfafasdfsssssssssssssssssssssssssssssssssssssssssss<br/></div>
</body>
用css写出导航后,就可以用js控制样式,达到显示和隐藏二级导航的效果了。可能比较疑惑的就是一级导航的li为relative,二级导航的ul为absolute。
二:下面就测试一下,脱离文档流不占用空间的absolute。
效果图:
代码:
<style>
.pbox{
width:400px;
height:600px;
background:silver;
position:relative;/*父元素relative·*/
}
.cbox1{
background:green;
width:150px;
height:300px;
}
.cbox2{
background:red;
width:150px;
height:300px;
position:absolute;/*脱离文档流,不占用空间*/
left:10px;
}
</style>
<div class="pbox"><!--含有三个子div元素,pbox为relative-->
<div class="cbox1"></div>
<div class="cbox2"></div>
<div>adsfdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd</div><!--该div 紧跟cbox1的div,因为cbox2已经不占用空间了-->
</div>
三、JS控制二级导航的显示与隐藏
<style>
body,ul{
margin:0;padding:0;
}
a{
text-decoration:none;
}
ul{
list-style:none;
}
#nav{
height:90px;
width:100%;
}
#nav li{
float:left;
height:80px;
border-right: 1px solid #131313;
background:green;
position: relative;
}
#nav li a{
color:white;
width:160px;
display:block;
background:silver;
padding:0 30px;
line-height:80px;
}
#nav li a:hover{
background-color:red;
}
#nav li ul{
position:absolute;
left:0;
width:160px;
display:none;/*让二级导航隐藏*/
}
#nav li.show ul{
display:block; /*显示二级导航的css*/
}
</style>
<script>
window.onload=function(){
var nav = document.getElementById("nav");
alert(nav.childNodes.length);
for (i=0; i < nav.childNodes.length; i++) {
var childNod = nav.childNodes[i];
if (childNod.nodeName=="LI") {
childNod.onmouseover=function(){
this.className+=" show";//添加显示样式
};
childNod.onmouseout=function() {
this.className=this.className.replace(" show", "");//删除显示样式
};
};
}
}
</script>
<body>
<div style="background:gold">
<ul id="nav">
<li ><a href="#">国内电影</a>
<ul>
<li><a href="#">风月</a></li>
<li><a href="#">动作</a></li>
</ul>
</li>
<li><a href="#">国外电影</a>
<ul>
<li><a href="#">激情</a></li>
<li><a href="#">速度</a></li>
</ul>
</li>
<li><a href="#">综艺电影</a></li>
<li><a href="#">科幻电影</a></li>
<li><a href="#">生活电影</a></li>
<li><a href="#">手机电影下载</a></li>
<li><a href="#">爱情</a></li>
<li><a href="#">喜剧电影</a></li>
</ul>
</div>
<div> hello world adfafasdfsssssssssssssss<br/>
hello world adfafasdfsssssssssssssss<br/>
hello world adfafasdfsssssssssssssss<br/> hello world adfafasdfsssssssssssssssasdfasfsdafsaffffffffffffffffffdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<br/>
hello world adfafasdfsssssssssssssss<br/> hello world adfafasdfsssssssssssssss<br/> hello world adfafasdfsssssssssssssssssssssssssssssssssssssssssss<br/></div>
</body>
浙公网安备 33010602011771号