JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://code.jquery.com/jquery-1.8.3.js"></script>
<div class="overlay"></div>
<div class="nav">
<a href="#" class="btn">Menu</a>
<ul>
<li><a href="#">link1</a></li>
<li><a href="#">link2</a></li>
<li><a href="#">link3</a></li>
<li><a href="#">link4</a></li>
<li><a href="#">link5</a></li>
</ul>
</div>
CSS
body {
height: 10000px;
}
.nav {
top: 0;
left: -200px;
width: 200px;
padding: 10px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: #bbb;
position: fixed;
z-index: 1000;
height: 100%;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.nav.open {
left: 0;
}
.nav ul {
margin: 0;
padding: 0;
list-style: none;
}
.nav ul li {
padding: 5px;
}
.nav .btn {
padding: 10px;
position: absolute;
top: 5px;
left: 100%;
margin-left: 5%;
background: #000;
color: #fff;
}
.overlay {
width: 100%;
height: 100%;
top: 0;
left: 0;
position: fixed;
background: rgba(0,0,0,0.2);
opacity: 0;
z-index: 999;
visibility: hidden;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-ms-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}
.overlay.nav-open {
opacity: 1;
visibility: visible;
}
JavaScript
$('.nav .btn').click(function(e){
var ths = $(this);
ths.closest('.nav').toggleClass('open');
$('.overlay').toggleClass('nav-open');
e.preventDefault();
});
$('.overlay').click(function(e){
var ths = $(this);
$('.overlay').removeClass('nav-open');
$('.nav').removeClass('open');
e.preventDefault();
});