可以先写个盒子,用display=none来修饰,同时也脱离标准流,鼠标经过在改变display的值
我在网上看到一个,不是用定位做的,感觉不错
原理就是通过某些事件,让元素显示和隐藏
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>原生js制作二级菜单</title>
<style>
*{
margin:0;
padding:0;
}
#nav{
width: 800px;
height: 50px;
line-height: 50px;
margin: 20px auto;
background-color: darkcyan;
}
ul,ol,li{
list-style: none;
}
#nav>ul>li{
width: 160px;
text-align: center;
float: left;
list-style: none;
}
a{
text-decoration: none;
color: #000;
}
a:hover{
text-decoration: underline;
color: #fff;
}
.companyIntroduceUrl{
display: none;
width: 100px;
margin: 0 auto;
background-color: lightsteelblue;
}
.companyIntroduceUrl>li{
padding:0;
margin:0;
}
</style>
</head>
<body>
<div id="nav">
<ul>
<li><a href="#">首页</a></li>
<li onmouseover="onOver(this)" onmouseout="onOut(this)">
<a href="#">公司介绍</a>
<ul class="companyIntroduceUrl">
<li><a href="#">走进我们</a></li>
<li><a href="#">悠久历史</a></li>
<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>
</ul>
</div>
<script>
function onOver(obj){
var sub_url=obj.getElementsByTagName("ul")
sub_url[0].style.display="block";
}
function onOut(obj){
var sub_url=obj.getElementsByTagName("ul")
sub_url[0].style.display="none";
}
</script>
</body>
</html>