<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>下拉菜单</title>
<style>
ul{
list-style: none;/*将前面的小符号去掉*/
}
a{
text-decoration: none;/*将下划线去掉*/
color: black;/*令字体颜色为黑色*/
width: 50px;/*a的宽度和li的宽度一样*/
display: inline-block;/*注意必须设置,否则没有办法设置宽度长度等属性*/
text-align: center;/*让a中的文字居中显示*/
}
.demo{
position: relative;
float: left;/*设置向左浮动*/
/*将文字设置垂直居中使用line-height将它和height的高度设置成一样*/
line-height: 41px;/*因为demo的高度为40.8px,所以设置41px是最接近demo的高度的,是最垂直居中的设置*/
width: 50px;
margin-left: 1px;/*解决边框重合问题,border-collapse必须是table标签才管用*/
/*没有设置padding就默认为0*/
}
.demo ul{
display: none;/*将下拉菜单隐藏*/
position: absolute;
top: 41px;/*相对于父元素,即demo元素的最顶部向下移动41px,因为demo元素的高为40.8px,所以41px差不多紧挨着demo元素的底部*/
left: 0;/*相对于父元素最左侧向右移动0px,即与父元素左边是在一条垂直线上面的*/
padding-left: 0;/*必须设置,否则ul会向右偏移*/
width: 100%;/*当width为100%的时候,子元素的宽度是继承父元素的宽度,不包括子元素设置的margin padding和border,所以有可能产生溢出*/
border-left: 1px solid #FECC5B;
border-right: 1px solid #FECC5B;
}
.demo ul li{
border-bottom: 1px solid #FECC5B;
}
.nav>li>a:hover{/*A>B表示选择A元素中的所有子B元素*/
background-color: #eee;
}
.nav ul li a:hover{
background-color: #FFF5DA;
}
</style>
</head>
<body>
<ul class="nav">
<li class="demo">
<a href="#">微博</a>
<ul>
<li>
<a href="">私信</a>
</li>
<li>
<a href="">评论</a>
</li>
<li>
<a href="">@我</a>
</li>
</ul>
</li>
<li class="demo">
<a href="#">微博</a>
<ul>
<li>
<a href="">私信</a>
</li>
<li>
<a href="">评论</a>
</li>
<li>
<a href="">@我</a>
</li>
</ul>
</li>
<li class="demo">
<a href="#">微博</a>
<ul>
<li>
<a href="">私信</a>
</li>
<li>
<a href="">评论</a>
</li>
<li>
<a href="">@我</a>
</li>
</ul>
</li>
<li class="demo">
<a href="#">微博</a>
<ul>
<li>
<a href="">私信</a>
</li>
<li>
<a href="">评论</a>
</li>
<li>
<a href="">@我</a>
</li>
</ul>
</li>
</ul>
<script>
//1)导航栏里的li都要有鼠标经过的效果,所以需要循环注册鼠标事件
//2)核心原理:当鼠标经过li里面的第二个孩子ul显示,当鼠标离开ul则隐藏
let nav=document.querySelector('.nav');
let lis=nav.children;//得到四个小li
for(let i=0;i<lis.length;i++){
lis[i].onmouseover=function(){
this.children[1].style.display='block';//鼠标经过菜单显示
}
lis[i].onmouseout=function(){
this.children[1].style.display='none';//鼠标移出,菜单隐藏
}
}
</script>
</body>
</html>
下拉菜单-js节点操作
最新推荐文章于 2024-11-02 19:19:35 发布