<html lang="es">
<head>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta charset="UTF-8">
<title>Css slide toggle</title>
<link href="https://fonts.googleapis.com/css?family=Poppins" rel="stylesheet">
</head>
<body>
<div class="menu">
<input type="checkbox" id="check">
<label for="check" class="button">
<span></span>
<span></span>
<span></span>
</label>
<nav>
<a href="#">Element 1</a>
<a href="#">Element 2</a>
<a href="#">Element 3</a>
</nav>
</div>
<div class="content">
<h1>Section 1</h1>
</div>
<div class="content sec2">
<h1>Section 2</h1>
</div>
</body>
</html>
* {
margin:0 ;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins';
}
/* content */
.content{
width: 100%;
height: 100vh;
background: url(https://images.unsplash.com/photo-1551334787-21e6bd3ab135?ixlib=rb-1.2.1&auto=format&fit=crop&w=1502&q=80);
background-position: center;
background-size: cover;
color: white;
text-align: center;
position: relative;
}
.sec2{
background: url(https://images.unsplash.com/photo-1551309292-e185c0b6e22a?ixlib=rb-1.2.1&auto=format&fit=crop&w=1500&q=80);
background-position: center;
background-size: cover;
}
h1{
font-size: 50px;
position: absolute;
width: 100%;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
.menu{
text-align: right;
position: fixed;
width: 100%;
z-index: 200;
}
/* I hide the checkbox because I only need the label */
#check{
display: none;
}
.button{
width: 48px;
height: 48px;
background: rgb(255, 196, 0);
padding: 12px;
display: inline-block;
cursor: pointer;
transition: all 0.2s ease-in;
padding-top: 8px;
line-height: 8px;
text-align: left;
position: fixed;
right: 0;
top: 0;
z-index: 201;
}
.button:hover{
background: #ff9d00;
}
.button span{
height: 3px;
width: 100%;
background: white;
display: inline-block;
transition: all 0.5s cubic-bezier(.62,.43,.35,1.47);
}
/* toggle icon animation */
#check:checked ~ .button span:nth-child(1){
width: 100%;
transform: rotate(45deg) translateY(6px) translateX(6px);
}
#check:checked ~ .button span:nth-child(2){
width: 0;
}
#check:checked ~ .button span:nth-child(3){
width: 100%;
transform: rotate(-45deg) translateY(-7px) translateX(7px);
}
/* the nav height is set to 0 when the navbar is closed */
nav{
text-align: left;
overflow: hidden;
transition: all 0.4s ease;
position: absolute;
top: 0;
left: 0;
width: 100%;
background: #ffffff;
height: 0;
}
nav a{
text-decoration: none;
color: #0c1019;
display: block;
font-size: 18px;
transition: all 0.4s cubic-bezier(.22,.43,.35,1.5);
opacity: 0;
transform: scale(0);
transform-origin: top;
text-align: center;
border-bottom: 1px solid #b4ac97;
}
nav a:hover{
background: #ffdd7f;
}
/* the nav height will be set to the height in pixels that would have for default, using height:auto won't work but you can put that value in pixels creating the slide*/
#check:checked ~ nav{
height: 144px;
}
#check:checked ~ nav a{
padding: 10px;
opacity: 1;
transform: scale(1);
}
/* you can edit the direction where the slide starts, changing the height animation to width, but it will take some changes.
for example:
nav{
width: 0%;
background: #ffffff;
height: auto;
max-height 144px;
opacity: 0;
}
#check:checked ~ nav{
width: 100%;
opacity: 1;
}
*/
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.