JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container
<div class="navbar-header">
<div class="container-fluid">
<div class="row">
<div class="col-xs-2 col-md-2" style="height:30px;margin-top:5px;">
<button type="button" class="navbar-toggle toggle-menu menu-left push-body" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="col-xs-8 col-md-8" style="height:30px;margin-top:5px;">
<input type="text" placeholder="email" class="form-control">
</div>
<div class="col-xs-2 col-md-2" style="height:30px;margin-top:5px;">
<button type="submit" class="btn btn-success">submit</button>
</div>
</div>
<div class="collapse navbar-collapse cbp-spmenu cbp-spmenu-vertical cbp-spmenu-left" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Link</a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
...
CSS
@media screen and (max-width: 767px) {
.navbar-fixed-top {
width:100%;
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height:none;
}
.navbar-nav {
margin:0;
}
.navbar-form {
margin:0;
}
/* General styles for all menus */
.cbp-spmenu {
background: #f8f8f8;
position: fixed;
padding:0;
margin:0 !important;
overflow-x:hidden;
overflow-y:visible;
display:block;
visibility:visible;
}
.navbar-fixed-top .cbp-spmenu {
bottom:0;
}
/* Orientation-dependent styles for the content of the menu */
.cbp-spmenu-vertical {
width: 260px;
height: 100%;
top: 0;
z-index: 1000;
}
.cbp-spmenu-horizontal {
width: 100%;
height: 150px;
left: 0;
z-index: 1000;
overflow: hidden;
}
.cbp-spmenu-horizontal h3 {
height: 100%;
width: 20%;
float: left;
}
.cbp-spmenu-horizontal a {
float: left;
width: 20%;
padding: 0.8em;
border-left: 1px solid #258ecd;
}
/* Vertical menu that slides from the left or right */
.cbp-spmenu-left {
left: -260px;
}
.cbp-spmenu-right,
.cbp-spmenu-push-toleft .navbar-fixed-top .cbp-spmenu-right.cbp-spmenu-open {
right: -260px;
}
.cbp-spmenu-left.cbp-spmenu-open,
.cbp-spmenu-push-toright .navbar-fixed-top .cbp-spmenu-left.cbp-spmenu-open {
left: 0px;
}
.cbp-spmenu-right.cbp-spmenu-open {
right: 0px;
}
/* Horizontal menu that slides from the top or bottom */
.cbp-spmenu-top {
top: -150px;
}
.cbp-spmenu-bottom {
bottom: -150px;
}
.cbp-spmenu-top.cbp-spmenu-open {
top: 0px;
}
.cbp-spmenu-bottom.cbp-spmenu-open {
bottom: 0px;
}
/* Push classes applied to the body */
.cbp-spmenu-push {
overflow-x: hidden;
position: relative;
left: 0;
}
.cbp-spmenu-push-toright,
.cbp-spmenu-push-toright .navbar-fixed-top {
left: 260px;
}
.cbp-spmenu-push-toleft,
.cbp-spmenu-push-toleft...
JavaScript
/*!
* jPushMenu.js
* 1.1.1
* @author: takien
* http://takien.com
* Original version (pure JS) is created by Mary Lou http://tympanus.net/
*/
(function($) {
$.fn.jPushMenu = function(customOptions) {
var o = $.extend({}, $.fn.jPushMenu.defaultOptions, customOptions);
/* add class to the body.*/
$('body').addClass(o.bodyClass);
$(this).addClass('jPushMenuBtn');
$(this).click(function() {
var target = '',
push_direction = '';
if($(this).is('.'+o.showLeftClass)) {
target = '.cbp-spmenu-left';
push_direction = 'toright';
}
else if($(this).is('.'+o.showRightClass)) {
target = '.cbp-spmenu-right';
push_direction = 'toleft';
}
else if($(this).is('.'+o.showTopClass)) {
target = '.cbp-spmenu-top';
}
else if($(this).is('.'+o.showBottomClass)) {
target = '.cbp-spmenu-bottom';
}
$(this).toggleClass(o.activeClass);
$(target).toggleClass(o.menuOpenClass);
if($(this).is('.'+o.pushBodyClass)) {
$('body').toggleClass( 'cbp-spmenu-push-'+push_direction );
}
/* disable all other button*/
$('.jPushMenuBtn').not($(this)).toggleClass('disabled');
return false;
});
var jPushMenu = {
close: function (o) {
$('.jPushMenuBtn,body,.cbp-spmenu').removeClass('disabled active cbp-spmenu-open cbp-spmenu-push-toleft cbp-spmenu-push-toright');
}
}
if(o.closeOnClickInside) {
$(document).click(function() {
jPushMenu.close();
});
$('.cbp-spmenu,.toggle-menu').click(function(e){
e.stopPropagation();
});
}
if(o.closeOnClickOutside) {
$(document).click(function() {
jPushMenu.close();
});
$('.cbp-spmenu,.toggle-menu').click(function(e){
e.stopPropagation();
});
}
// On Click Link
if(o.closeOnClickLink) {
$('.cbp-spmenu a').on('click',function(){
jPushMenu.close();
...