使用html+css实现三条横线的菜单按钮,点击弹出列表菜单,菜单按钮变叉,点击叉按钮或点击列表项收回菜单:
点击按钮:
点击叉按钮或者菜单列表项都可以收回菜单。
css代码:
.inner-header{
background-color: rgba(0,0,0,1);
width: 100%;
height: 50px;
position: absolute;
top: 0px;
left: 0px;
}
.inner-header-icon{
color: #ffffff;
height: 50px;
font-size:25px;
text-align: center;
float:right;
width: 50px;
position: relative;
-webkit-transition: background 0.5s;
-moz-transition: background 0.5s;
-o-transition: background 0.5s;
transition: background 0.5s;
}
.inner-header-icon:hover{
background-color: rgba(255,255,255,0.2);
cursor: pointer;
}
.inner-header-icon span{
position: absolute;
left: calc((100% - 25px) / 2);
top: calc((100% - 1px) / 2);
width: 25px;
height: 1px;
background-color: rgba(255,255,255,1);
}
.inner-header-icon span:nth-child(1){
transform: translateY(4px) rotate(0deg);
}
.inner-header-icon span:nth-child(2){
opacity: 0;
}
.inner-header-icon span:nth-child(3){
transform: translateY(-4px) rotate(0deg);
}
.inner-header-icon-click span:nth-child(1){
animation-duration: 0.5s;
animation-fill-mode: both;
animation-name: clickfirst;
}
.inner-header-icon-click span:nth-child(2){
animation-duration: 0.5s;
animation-fill-mode: both;
animation-name: clicksecond;
}
.inner-header-icon-click span:nth-child(3){
animation-duration: 0.5s;
animation-fill-mode: both;
animation-name: clickthird;
}
/*第一条线旋转动画*/
@keyframes clickfirst {
0% {
transform: translateY(4px) rotate(0deg);
}
100% {
transform: translateY(0) rotate(45deg);
}
}
/*第二条线淡入淡出动画动画*/
@keyframes clicksecond {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
/*第三条线旋转动画*/
@keyframes clickthird {
0% {
transform: translateY(-4px) rotate(0deg);
}
100% {
transform: translateY(0) rotate(-45deg);
}
}
.inner-header-icon-out span:nth-child(1){
animation-duration: 0.5s;
animation-fill-mode: both;
animation-name: outfirst;
}
.inner-header-icon-out span:nth-child(2){
animation-duration: 0.5s;
animation-fill-mode: both;
animation-name: outsecond;
}
.inner-header-icon-out span:nth-child(3){
animation-duration: 0.5s;
animation-fill-mode: both;
animation-name: outthird;
}
@keyframes outfirst {
0% {
transform: translateY(0) rotate(-45deg);
}
100% {
transform: translateY(-4px) rotate(0deg);
}
}
@keyframes outsecond {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes outthird {
0% {
transform: translateY(0) rotate(45deg);
}
100% {
transform: translateY(4px) rotate(0deg);
}
}
.inner-nav{
background-color: rgba(0,0,0,0.9);
width: 100%;
position: absolute;
top: 50px;
left: 0px;
padding-top: 30px;
padding-bottom: 80px;
display: none;
}
.inner-nav a{
display: inline-block;
line-height: 50px;
text-decoration: none;
width: 80%;
margin-left: 10%;
color: #FFFFFF;
border-bottom: solid 1px rgba(255,255,255,0.3);
-webkit-transition: all 0.5s;
-moz-transition: all 0.5s;
-o-transition: all 0.5s;
transition: all 0.5s;
font-weight:300;
}
.inner-nav a:hover{
color: rgba(255,255,255,0.4);
border-bottom: solid 1px rgba(255,255,255,0.2);
}
html代码:(使用代码时记得引入jquery-2.1.1.min.js文件)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link href="menu.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div>
<div class="inner-header">
<!--两条横线菜单-->
<div class="inner-header-icon inner-header-icon-out"><span></span><span></span><span></span></div>
</div>
<!--菜单展开项-->
<div class="inner-nav">
<a href="#">第一页</a>
<a href="#">第二页</a>
<a href="#">第三页</a>
</div>
</div>
<script src="js/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
$(window).load(function () {
$(".inner-header-icon").click(function(){//点击菜单按钮事件
$(this).toggleClass("inner-header-icon-click inner-header-icon-out");
$(".inner-nav").slideToggle(250);
});
$(".inner-nav").click(function () {//点击菜单列表项,收回菜单
$(".inner-header-icon").click();//触发菜单按钮点击事件
});
$(".nner-nav a").each(function( index ) {
$( this ).css({'animation-delay': (index/10)+'s'});
});
});
</script>
</body>
</html>