JSFiddle - React, Tailwind, and code Playground
by Alexandru Gatea
HTML
<div id="main-container">
<div id="navBtn"></div>
<div id="container">
<div id="navMenu"></div>
</div>
</div>
CSS
#main-container {
width: 350px;
height: 600px;
border: 1px solid black;
position: absolute;
overflow: hidden;
}
#container {
width: 350px;
height: 100%;
display: absolute;
z-index: 1;
background: rgba(0, 102, 199, 0.8);
}
#navBtn {
width: 50px;
height: 50px;
background: red;
position: absolute;
z-index: 999;
}
#navMenu {
width: 250px;
height: 100%;
background: blue;
position: absolute;
z-index: 9999;
top: 0;
animation-name: slidein;
animation-duration: .5s;
}
@-webkit-keyframes slidein {
0% {
transform: translateX(-200px);
}
100% {
transform: translateX(0px);
}
}
#navMenu.close {
animation-name: slideout;
animation-duration: .5s;
}
@-webkit-keyframes slideout {
0% {
transform: translateX(0px);
}
100% {
transform: translateX(-200px);
}
}
JavaScript
var navBtn = document.getElementById("navBtn");
var navMenu = document.getElementById("navMenu");
var container = document.getElementById("container");
navBtn.addEventListener("click", showMenu);
container.addEventListener("click", hideMenu);
navMenu.style.display = "none";
function showMenu() {
if (navMenu.style.display !== "none") {
navMenu.style.display = "none"
} else {
navMenu.style.display = "block", container.style.background = "rgba(0, 102, 199, 1)";
}
}
function hideMenu() {
if (navMenu.style.display = "block") {
navMenu.style.display = "none", container.style.background = "lightblue";
}
}