JSFiddle - React, Tailwind, and code Playground
by Tim Ko
HTML
<input type="checkbox" class="side-menu-handler" id="sideMenuHandler">
<div class="main">
<label class="list-btn menu-button" id="menuButton" for="sideMenuHandler">OPEN MENU</label>
<div class="result">You clicked: <text>nothing</text></div>
</div>
<label class='side-menu-overlay' for="sideMenuHandler"></label>
<div class='side-menu'>
<label class='side-menu-separator'>MENU</label>
<label class='side-menu-item watchlist-button' for="sideMenuHandler">Favorites</label>
<label class='side-menu-item previous-search-button' for="sideMenuHandler">Previous Search</label>
<label class='side-menu-item logout-button' for="sideMenuHandler">Logout</label>
</div>
CSS
* {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 1em;
}
.main {
transition: -moz-transform .25s ease-in-out;
-moz-transition: -moz-transform .25s ease-in-out;
-webkit-transition: -webkit-transform .25s ease-in-out;
}
.side-menu-handler {
display: none;
}
.side-menu-overlay {
position: fixed;
top: 0px;
left: 0px;
display: none;
height: 100%;
width: 100%;
z-index: 1;
}
.side-menu {
position: fixed;
top: 0px;
left: -152px;
height: 100%;
width: 152px;
z-index: 2;
overflow-x: hidden;
overflow-y: auto;
background: #333;
opacity: 0.95;
transition: -moz-transform .25s ease-in-out;
-moz-transition: -moz-transform .25s ease-in-out;
-webkit-transition: -webkit-transform .25s ease-in-out;
}
.side-menu-separator {
cursor: default;
display: block;
width: 132px;
height: 12px;
padding: 10px;
margin: 0px;
color: #aeaeae;
font-size: 12px;
}
.side-menu-item {
cursor: pointer;
display: block;
width: 132px;
height: 14px;
padding: 10px;
margin: 0px;
color: white;
font-size: 14px;
text-overflow: ellipsis;
}
.side-menu-handler:checked ~ .main,
.side-menu-handler:checked ~ .side-menu{
display: block;
transform: translate3D(152px,0,0); /* X value must be same as Nav width */
-moz-transform: translate3D(152px,0,0); /* X value must be same as Nav width */
-webkit-transform: translate3D(152px,0,0); /* X value must be same as Nav width */
}
.side-menu-handler:checked ~ .side-menu-overlay {
display: block;
}
.side-menu-item:active {
background: black;
}
.side-menu-item:hover {
background: slategrey;
}
.menu-button {
background: lightgray;
border: 1px black;
padding: 6px;
}
.back-button {
}
.logout-button {
}
.result {
margin-top: 10px;
}
JavaScript
// Side menu
$('.watchlist-button').on('click', function() {
$('.result text').html("favorites!");
});
$('.previous-search-button').on('click', function() {
$('.result text').html("previous search!!");
});
$('.logout-button').on('click', function() {
$('.result text').html("logout!");
});