JSFiddle - React, Tailwind, and code Playground
by envira
HTML
<body>
<main class="cd-main-content">
<header>
<a id="cd-logo" href="#0"><img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/148866/cd-logo-sec-exp-nav.svg" alt="Homepage"></a>
<nav id="cd-top-nav">
<ul>
<li><a href="#0">Tour</a></li>
<li><a href="#0">Login</a></li>
</ul>
</nav>
<a id="cd-menu-trigger" href="#0"><span class="cd-menu-text">Menu</span><span class="cd-menu-icon"></span></a>
</header>
<!-- put your content here -->
</main> <!-- cd-main-content -->
<nav id="cd-lateral-nav">
<ul class="cd-navigation">
<li class="item-has-children">
<a href="#0">Services</a>
<ul class="sub-menu">
<li><a href="#0">Brand</a></li>
<li><a href="#0">Web Apps</a></li>
<li><a href="#0">Mobile Apps</a></li>
</ul>
</li> <!-- item-has-children -->
<li class="item-has-children">
<a href="#0">Products</a>
<ul class="sub-menu">
<li><a href="#0">Product 1</a></li>
<li><a href="#0">Product 2</a></li>
<li><a href="#0">Product 3</a></li>
<li><a href="#0">Product 4</a></li>
<li><a href="#0">Product 5</a></li>
</ul>
</li> <!-- item-has-children -->
<li class="item-has-children">
<a href="#0">Stockists</a>
<ul class="sub-menu">
<li><a href="#0">London</a></li>
<li><a href="#0">New York</a></li>
<li><a href="#0">Milan</a></li>
<li><a href="#0">Paris</a></li>
</ul>
</li> <!-- item-has-children -->
</ul> <!-- cd-navigation -->
<ul class="cd-navigation cd-single-item-wrapper">
<li><a href="#0">Tour</a></li>
<li><a href="#0">Login</a></li>
<li><a href="#0">Register</a></li>
<li><a href="#0">Pricing</a></li>
<li><a href="#0">Support</a></li>
</ul> <!-- cd-single-item-wrapper -->
<ul class="cd-navigation cd-single-item-wrapper">
<li><a class="current" href="#0">Journal</a></li>
<li><a href="#0">FAQ</a></li>
<li><a href="#0">Terms & Conditions</a></li>
<li><a href="#0">Careers</a></li>
<li><a...
CSS
/* --------------------------------
Primary style
-------------------------------- */
html * {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
*, *:after, *:before {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html, body {
/* you need to set this to assign to the main element a min height of 100% */
height: 100%;
}
body {
font-size: 100%;
font-family: "Titillium Web", sans-serif;
color: #4e6361;
background-color: #f5f4e9;
}
a {
color: #6cac70;
text-decoration: none;
}
/* --------------------------------
Modules - reusable parts of our design
-------------------------------- */
.cd-img-replace {
/* replace text with a background-image */
display: inline-block;
overflow: hidden;
text-indent: 100%;
white-space: nowrap;
}
.overflow-hidden {
overflow: hidden;
}
/* --------------------------------
Main components
-------------------------------- */
.cd-main-content {
/* set a min-height and a z-index to be sure that the main element completely covers the lateral menu */
min-height: 100%;
position: relative;
background-color: #f5f4e9;
z-index: 2;
/* Force Hardware Acceleration in WebKit */
-webkit-transform: translateZ(0);
-webkit-backface-visibility: hidden;
-webkit-transition-property: -webkit-transform;
-moz-transition-property: -moz-transform;
transition-property: transform;
-webkit-transition-duration: 0.4s;
-moz-transition-duration: 0.4s;
transition-duration: 0.4s;
}
.cd-main-content.lateral-menu-is-open {
/* translate to show the lateral menu - all content needs to be put in the .cd-main-content to translate*/
-webkit-transform: translateX(-260px);
-moz-transform: translateX(-260px);
-ms-transform: translateX(-260px);
-o-transform: translateX(-260px);
transform: translateX(-260px);
}
header {
position: relative;
height: 50px;
width: 100%;
background: #4e6361;
}
@media only screen and...
JavaScript
jQuery(document).ready(function($){
var $lateral_menu_trigger = $('#cd-menu-trigger'),
$content_wrapper = $('.cd-main-content');
// fallback added for IE9 - transition not supported
var is_explorer_9 = navigator.userAgent.indexOf('MSIE 9') > -1;
//open-close lateral menu clicking on the menu icon
$lateral_menu_trigger.on('click', function(event){
event.preventDefault();
$lateral_menu_trigger.toggleClass('is-clicked');
$content_wrapper.toggleClass('lateral-menu-is-open').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){
// firefox transitions break when parent overflow is changed, so we need to wait for the end of the trasition to give the body an overflow hidden
$('body').toggleClass('overflow-hidden');
});
$('#cd-lateral-nav').toggleClass('lateral-menu-is-open');
if(is_explorer_9) {
$('body').toggleClass('overflow-hidden');
}
});
//close lateral menu clicking outside the menu itself
$content_wrapper.on('click', function(event){
if( !$(event.target).is('#cd-menu-trigger, #cd-menu-trigger span') ) {
$lateral_menu_trigger.removeClass('is-clicked');
$content_wrapper.removeClass('lateral-menu-is-open').one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(){
$('body').removeClass('overflow-hidden');
});
$('#cd-lateral-nav').removeClass('lateral-menu-is-open');
if(is_explorer_9) {
$('body').removeClass('overflow-hidden');
}
}
});
//open (or close) submenu items in the lateral menu. Close all the other open submenu items.
$('.item-has-children').children('a').on('click', function(event){
event.preventDefault();
$(this).toggleClass('submenu-open').next('.sub-menu').slideToggle(200).end().parent('.item-has-children').siblings('.item-has-children').children('a').removeClass('submenu-open').next('.sub-menu').slideUp(200);
});
});