JSFiddle - React, Tailwind, and code Playground

by ethanpil

HTML

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/topcoat/0.8.0/css/topcoat-mobile-dark.min.css">
<div class="topcoat-navigation-bar">
    <div class="topcoat-navigation-bar__item left quarter">
        <a id="slide-menu-button" class="topcoat-icon-button--quiet slide-menu-button">
            <span class="topcoat-icon topcoat-icon--menu-stack"></span>
        </a>
    </div>
    <div class="topcoat-navigation-bar__item center half">
        <h1 class="topcoat-navigation-bar__title">Topcoat Drawer</h1>
    </div>
    <div class="topcoat-navigation-bar__item right quarter">
        <a class="topcoat-icon-button--quiet">
            <span class="topcoat-icon topcoat-icon--edit"></span>
        </a>
    </div>
</div>
<nav class="side-nav">
    <div class="topcoat-list__container side-nav__list__container">
        <ul class="topcoat-list side-nav__list">
            <li class="topcoat-list__item side-nav__list__item">
                <a href="#" class="side-nav__button">Item</a>
            </li>
            <li class="topcoat-list__item side-nav__list__item is-active">
                <a href="#" class="side-nav__button">Item</a>
            </li>
            <li class="topcoat-list__item side-nav__list__item">
                <a href="#" class="side-nav__button">Item</a>
            </li>
        </ul>
    </div>
</nav>
<div class="main-content">
    <div class="topcoat-list">
        <ul class="topcoat-list__container">
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
            <li class="topcoat-list__item">Item</li>
        </ul>
    </div>
</div>

CSS

html, body {
    margin:0;
    padding:0;
    height: 100%;
}
body {
    font-family: source-sans-pro, sans-serif;
    position: relative;
    width: 100%;
    height:100%;
    overflow: hidden;
    -webkit-font-smoothing: antialiased;
}
body.left-nav .topcoat-navigation-bar, body.left-nav .main-content {
    left:250px;
}
.topcoat-navigation-bar {
    position:absolute;
    width:100%;
    z-index:100;
    transition: left 0.2s ease-out;
    -webkit-transition: left 0.2s ease-out;
    transform: translate3d(0, 0, 0);
    -webkit-transform: translate3d(0, 0, 0);
}
.side-nav {
    display:block;
    position:absolute;
    top:0;
    left:0;
    width:320px;
    height:100%;
    background-color:#353535;
}
.side-nav__list__container {
    margin-top:4rem;
    border-top:none;
    border-bottom:none;
}
.side-nav__list {
    border-top:none;
}
.side-nav__list__item {
    padding:0;
}
.side-nav__list__item.is-active {
    background-color:#353535;
}
.side-nav__button {
    display:block;
    width:100%;
    height:100%;
    padding: 1.25rem;
    box-sizing: border-box;
    color: #c6c8c8;
    text-decoration:none;
}
.side-nav__button:hover {
    background-color:#747474;
}
.side-nav__button:active {
    background-color:#353535;
}
.main-content {
    position: absolute;
    background: inherit;
    left: 0;
    padding-top:4rem;
    width:100%;
    height:100%;
    transition: left 0.2s ease-out;
    -webkit-transition: left 0.2s ease-out;
    transform: translate3d(0, 0, 0);
    -webkit-transform: translate3d(0, 0, 0);
    -moz-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.57);
    -webkit-box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.57);
    box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.57);
}
@media screen and (min-width: 640px) { /* @media screen and (min-width: 880px) { */
    .slide-menu-button {
        display:none;
    }
    .main-content {
        left:320px;
        right:0;
        width:auto;
    }
}

JavaScript

var slideMenuButton = document.getElementById('slide-menu-button');
    slideMenuButton.onclick = function (e) {
        var cl = document.body.classList;
        if (cl.contains('left-nav')) {
            cl.remove('left-nav');
        } else {
            cl.add('left-nav');
        }
    };