<li class="nav1 ">
<a href="javacript:;">学院概况</a>
<ul class="nav2 nav2_7row">
<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>
<li><a href="#">⼴⾦章程</a></li>
</ul>
</li>
②定义动画:
**分析:**其实这个动画,我们可以解释成,⼆级菜单的⾼度由初始的0px,⼀直慢慢的变长到能显⽰所有的选项。
有⼩朋友可能就会问,那我怎么才能知道什么时候才能刚好变长到能显⽰完⼆级菜单中的所有选项呢?
其实我们应该在定义动画前先确定⼆级菜单中每个选项的盒⼦⾼度是多少(包括padding、边框还有margin),这样我们针对含有不同的数⽬选项的⼆级菜单,我们可以定义不同的动画,这⾥我的⼆级菜单选项⾼度是30px, 并且⼆级菜单有四种不同⾼度;
/*有7⾏*/
@keyframes displayNav2_7row{
from{
height: 0px;
}
to{
height: 210px;
}
}
/*有2⾏*/
@keyframes displayNav2_2row{
from{
height: 0px;
}
to{
height: 60px;
}
}
/*有5⾏*/
@keyframes displayNav2_5row{
from{
height: 0px;
}
to{
height: 150px;
}
}
/*有4⾏*/
@keyframes displayNav2_4row{
from{
height: 0px;
}
to{
height: 120px;
}
}
ps:不了解css3动画的可以先去学习animation的使⽤。
③设置完⼆级菜单的样式后,把他们都先隐藏,即设置css的display属性为none;接着是对不同⼆级菜单设置不同类型的动画:
/*有7⾏*/
.nav2_7row{
animation: displayNav2_7row 0.35s ease-in 0s forwards;
}
/*有2⾏*/
.nav2_2row{
animation: displayNav2_2row 0.1s ease-in 0s forwards;
}
/*有5⾏*/
.nav2_5row{
animation: displayNav2_5row 0.25s ease-in 0s forwards;
}
/*有4⾏*/
.nav2_4row{
animation: displayNav2_4row 0.2s ease-in 0s forwards;
}
这⾥再送上⼀张对于过渡⽅式: timing-function的各种属性的效果说明:
当⿏标悬浮在⼀级菜单时,使hover伪类⽣效,把⼆级菜单的display属性改为block;
/*第⼀个⼆级导航*/
.nav1:hover .nav2{
display: block;
}
ps:如果使⽤css过渡transition来做,就不能通过改变display属性了,会没有动画效果,但是你可以通过改变visibility属性来实现⼀样的效果。
按理来说,根据以上步骤,菜单下拉动画已经完成了,but!!
我们这⾥是有点不同的,为了美观,我们这⾥的⼆级菜单和⼀级菜单是不相连的!
这样就会出现⼀个问题,当⿏标想从⼀级菜单的选项移⼊到它的⼆级菜单时,还没移⼊,⼆级菜单就先收起了?那么因为,他们之间隔着⼀条缝隙,这样⿏标在移⼊⼆级菜单之前,先经过了外层,那么hover也就没有了,那么⼆级菜单也就再次隐藏了?
其实问题就出在了间隔,如果让他们相连就不同出现这样的问题?
那应该怎么办呢?这⾥有个⼩技巧,能够使得它们看上去仍然是间隔,实际上他们是相连的!
那就是利⽤::after或::before伪元素来连接
.nav1::after{
display: inline-block;
position:absolute;
bottom:-10px;
left:0;
background-color:#000;
height:10px;
width:100%;
content:"";
}
这⾥使⽤的是,在nav1上增加伪元素,使得nav1和nav2再次相连,接下来就是把伪元素的背景颜⾊换成透明的就⾏了
background-color:transparent;
这样,我们就真正的把⼆级导航的下拉动画给做完了!
最后给出完整代码!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"content="width=device-width, initial-scale=1.0">
<title>css3过渡实现⼆级菜单下拉效果</title>
<style>
/*⼀级导航*/
.nav{
position: relative;
margin:30px auto 0;
height: 30px;
width: 700px;
font-size: 16px;
border:1px solid #96221c;
background-color:#eee;
}
.nav a{
text-decoration: none;
color: #000;
}
.nav ul{
list-style:none;
padding:0px;/*去除li左边⾃带的40px*/
margin:0px;
}
/*nav下的嵌套列表的第⼀层li*/
.nav1{
position: relative;
float: left;
line-height:30px;
padding:0 8px;
text-align: center;
}
/*第⼀个⼆级导航*/
.nav1:hover .nav2{
display: block;
}
/*⼆级菜单*/
.nav2{
display: none;
position: absolute;
top:35px;
left:-17px;
right:-17px;
overflow: hidden;
border:2px solid #96221c;
font-size: 15px;
width: 100px;
text-align: center;
z-index: 99;
}
/*有7⾏*/
.
nav2_7row{
animation: displayNav2_7row 0.35s ease-in 0s forwards; }
/*有2⾏*/
.nav2_2row{
animation: displayNav2_2row 0.1s ease-in 0s forwards; }
/*有5⾏*/
.nav2_5row{
animation: displayNav2_5row 0.25s ease-in 0s forwards; }
/*有4⾏*/
.nav2_4row{
animation: displayNav2_4row 0.2s ease-in 0s forwards; }
.
nav1::after{
display: inline-block;
position:absolute;
bottom:-10px;
left:0;
background-color:transparent;
height:10px;
width:100%;
content:"";
}
.nav2 a{
display: block;
padding:5px;
line-height:20px;
color: #96221c;
}
/*有7⾏*/
@keyframes displayNav2_7row{
from{
height: 0px;
}
to{
height: 210px;
}
}
/*有2⾏*/
@keyframes displayNav2_2row{
from{
height: 0px;
}
to{
height: 60px;
}
}
/*有5⾏*/
/*有5⾏*/
@keyframes displayNav2_5row{
from{
height: 0px;
}
to{
height: 150px;
}
}
/
*有4⾏*/
@keyframes displayNav2_4row{
from{
height: 0px;
}
to{
height: 120px;
}
}
</style>
</head>
<body>
<!--导航-->
<div class="nav"id="nav">
<ul>
<li class="nav1">
<a href="#">⾸页</a>
</li>
<li class="nav1 ">
<a href="javacript:;">学院概况</a>
<ul class="nav2 nav2_7row">
<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>
<li><a href="#">⼴⾦章程</a></li>
</ul>
</li>
<li class="nav1">
<a href="gsz.htm">机构设置</a>
html下拉菜单的制作方法</li>
<li class="nav1">
<a href="javacript:;">师资队伍</a>
<ul class="nav2 nav2_2row">
<li><a href="#"target="_blank">师资概述</a></li>
<li><a href="#"target="_blank">名师风采</a></li>
</ul>
</li>
<li class="nav1">
<a href="#">招⽣就业</a>
<ul class="nav2 nav2_5row">
<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>
</li>
<li class="nav1">
<a href="javacript:;">教育教学</a>
<ul class="nav2 nav2_7row">
<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>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论