纯css制作三级下拉菜单

css本身的功能就挺强大的,尤其是css3出来之后,大部分特效只用css3就能完成了,无需再费心思去想js怎么实现,代码简洁质量轻巧。

三级下拉菜单

思路很简单,三级菜单直接用三层嵌套的ul布局:

<div class="nav">
<ul>
	<li>
		<a href="#">电器</a>
		<ul>
			<li>
				<a href="#">家用电器</a>
				<ul>
					<li><a href="#">生活电器</a></li>
					<li><a href="#">生活电器</a></li>
					<li><a href="#">个人护理</a></li>
				</ul>
			</li>
		</ul>
	</li>
</ul>
</div>

除一级ul外其余ul隐藏,当鼠标划过第一层li时该li下的下一级ul(二级菜单)显示

.nav>ul>li ul{
			display: none;
		}
.nav>ul>li:hover>a+ul{/*鼠标划过一级菜单的时候二级菜单显示*/
			display: block;
		}

当鼠标划过第二层li时该li下的下一级ul(三级菜单)显示

.nav>ul>li>ul>li:hover ul{/*鼠标划过二级菜单的时候对应的三级菜单显示*/
			display: block;
		}

基本思路就是这样,如果需要更多的特效,自己额外添加样式就可以了,下面附上图片中例子的完整代码:

<DOCTYPE html>
<html>
<head>
	<title>三级下拉菜单</title>
	<meta charset="utf-8">
	<style type="text/css">
		body,*{
			margin: 0px;
			padding: 0px;
			font-size: 0px;
			color: #555;
			box-sizing:border-box;
		}
		ul{
			list-style: none;
		}
		.banner{
			width: 100%;
			height: 100px;
		}
		.nav{
			width: 100%;
			height: 60px;
			border: 0px;
			border-top: 1px solid #eee;
			border-bottom: 1px solid #eee;
			background-color: #fff;
		}
		.nav>ul{
			width: 80%;
			margin:0 auto;
		}
		.nav>ul:after{
			display: block;
			content: '';
			clear: both;
		}
		.nav>ul>li{
			display: block;
			width: 140px;
			height: 100%;
			padding-left: 20px;
			float: left;
			text-align: center;
			background: url(img/bg.gif) no-repeat;
			background-position: 21px 22px;
		}
		.nav>ul>li:hover{
			background-color: #fff5f5;
		}
		.nav>ul>li a{
			display: inline-block;
			width: 100%;
			height: 100%;
			padding: 10px 20px;
			font-size: 18px;
			line-height: 40px;
			text-decoration:none;
		}
		.nav>ul>li ul{
			display: none;
		}
		.nav>ul>li:hover>a+ul{/*鼠标划过一级菜单的时候二级菜单显示*/
			display: block;
		}
		.nav>ul>li>ul{
			width: 160px;
			height: auto;
			border: 1px solid #eee;
			border-radius:3px;
			position: relative;
			top: 0px;
			left: -20px;
		}
		.nav>ul>li>ul>li,.nav>ul>li>ul>li>ul>li{
			display: block;
			width: 100%;
			height: 60px;
			text-align: center;
			border-bottom: 1px solid #eee;
		}
		.nav>ul>li>ul>li:last-child,.nav>ul>li>ul>li>ul>li:last-child{
			border: 0px;
		}
		.nav>ul>li>ul>li:hover,.nav>ul>li>ul>li>ul>li:hover{/*与用户的交互不能少*/
			background: #fff9f9;
		}
		.nav>ul>li>ul>li:hover ul{/*鼠标划过二级菜单的时候对应的三级菜单显示*/
			display: block;
		}
		.nav>ul>li>ul>li>ul{
			width: 160px;
			height: auto;
			border: 1px solid #eee;
			border-radius:3px;
			position: relative;
			top: -60px;
			left: 100%;
		}
	</style>
</head>
<body>
<div class="banner"></div>
<div class="nav">
	<ul>
		<li>
			<a href="#">电器</a>
			<ul>
				<li>
					<a href="#">家用电器</a>
					<ul>
						<li><a href="#a" target="_self">生活电器</a></li>
						<li><a href="#a" target="_self">生活电器</a></li>
						<li><a href="#a" target="_self">个人护理</a></li>
					</ul>
				</li>
				<li>
					<a href="#">数码</a>
					<ul>
						<li><a href="#a" target="_self">平板电脑</a></li>
						<li><a href="#a" target="_self">数码相机</a></li>
						<li><a href="#a" target="_self">电玩动漫</a></li>
					</ul>
				</li>
				<li>
					<a href="#">手机</a>
				</li>
			</ul>
		</li>
		<li>
			<a href="#">服饰</a>
			<ul>
				<li>
					<a href="#">男装</a>
					<ul>
						<li><a href="#a" target="_self">商务男装</a></li>
						<li><a href="#a" target="_self">休闲运动</a></li>
					</ul>
				</li>
				<li>
					<a href="#">女装</a>
					<ul>
						<li><a href="#a" target="_self">新品</a></li>
						<li><a href="#a" target="_self">明星网红</a></li>
						<li><a href="#a" target="_self">时尚穿搭</a></li>
					</ul>
				</li>
				<li>
					<a href="#">童装</a>
					<ul>
						<li><a href="#a" target="_self">演出服</a></li>
						<li><a href="#a" target="_self">运动装</a></li>
						<li><a href="#a" target="_self">连衣裙</a></li>
					</ul>
				</li>
			</ul>
		</li>
		<li>
			<a href="#">食品</a>
			<ul>
				<li>
					<a href="#">生活零食</a>
					<ul>
						<li><a href="#a" target="_self">干果</a></li>
						<li><a href="#a" target="_self">辣条</a></li>
						<li><a href="#a" target="_self">薯片</a></li>
					</ul>
				</li>
			</ul>
		</li>
	</ul>
</div>
</body>
</html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值