自适应的下拉菜单(原声js实现)

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>下拉菜单</title>
	<style>
	*{margin: 0;padding: 0}
	#ul1{
		width: 300px;
		height: 30px;
		background: orange;
		margin: 100px auto;
	}
	#ul1>li{
		width: 98px;
		height: 28px;
		 float: left; 
		list-style: none;
		line-height: 30px;
		border:1px solid black;
		text-align: center;
	}
	#ul1>li>ul{
		width: 95px;
		list-style: none;
		line-height: 30px;
		background: pink;
		text-align: center;
		height: 0;
		overflow: hidden;
		opacity: 0;
		filter: alpha(opacity=0);
	}
	</style>
</head>
<body>
	<ul id="ul1">
		<li>首页1
			<ul>
				<li>项目一</li>
				<li>项目二</li>
				<li>项目三</li>
			</ul>
		</li>
		
		<li>首页2
			<ul>
				<li>项目一</li>
				<li>项目二</li>
				<li>项目三</li>
			</ul>
		</li>
		
		<li>首页3
			<ul>
				<li>项目一</li>
				<li>项目二</li>
				<li>项目三</li>
				<li>项目四</li>
				<li>项目五</li>
			</ul>
		</li>
		
	</ul>
</body>
<!-此处的完美运动框架见本博客的下篇--->
<script src="js/完美运动框架.js"></script>
<script>
	var oUl = document.querySelector("#ul1");
	var oLis = oUl.querySelectorAll("#ul1>li");
	for(var i = 0;i < oLis.length;i++){
		var oSmallUl = oLis[i].querySelector("ul");
		//这oSmallUl的高度是自适应的,这里需要获取自适应的高度  
		oSmallUl.style.height = "auto";
		oSmallUl.iHeight = oSmallUl.offsetHeight;
		//获取完自适应的高度以后一定要记得重新将高度设为0
		oSmallUl.style.height = '0px';

		oLis[i].onmouseover = function(){
		var oSmallUl = this.querySelector("ul");
		var oSmallUlLis = oSmallUl.querySelectorAll("li")
		startMove(oSmallUl,{"height":oSmallUl.iHeight,"opacity":100});
		
		for(var i = 0;i < oSmallUlLis.length;i++){
			oSmallUlLis[i].onmouseover = function(){
				this.style.background = "green";
				this.style.color = "white";
			}
			oSmallUlLis[i].onmouseout = function(){
				this.style.background = "pink";
				this.style.color = "black";
			}
		}
	}

		oLis[i].onmouseout = function(){
		var oSmallUl = this.querySelector("ul");
		startMove(oSmallUl,{"height":0,"opacity":0});
		}
	}
</script>
</html>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值