JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://vadikom.github.io/smartmenus/src/css/sm-core-css.css">
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://vadikom.github.io/smartmenus/src/jquery.smartmenus.js"></script>
<link rel="stylesheet" href="https://vadikom.github.io/smartmenus/src/css/sm-simple/sm-simple.css">
<nav class="main-nav" role="navigation">
<!-- Mobile menu toggle button (hamburger/x icon) -->
<input id="main-menu-state" type="checkbox" />
<label class="main-menu-btn" for="main-menu-state">
<span class="main-menu-btn-icon"></span> Toggle main menu visibility
</label>
<h2 class="nav-brand"><a href="#">Brand</a></h2>
<!-- Sample menu definition -->
<ul id="main-menu" class="sm sm-simple">
<li><a href="#">stuff</a>
<ul class="columns-2">
<li><a href="#"> Monitor</a></li>
<li><a href="#">Audio</a>
<ul>
<li><a href="#">Radio</br><span style="color:red">Download & Save File to Desktop</span></a></li>
<li><a href="#">Radio</br><span style="color:red">Download & Save File to Desktop</a></li>
</ul>
</li>
<li><a href="http://www.smartmenus.org/support/">Query</a>
<ul>
<li><a href="#">Query<br />8/14/2013 +</a></li>
<li><a href="#">Query<br />1/1/2005 - 8/14/2013</a></li>
<li><a href="#">Query Archive<br />Prior to 1/1/2005</a></li>
</ul>
</li>
<li><a href="#">Advisory</a></li>
</ul>
</ul>
</nav>
<div class="demo-text">
<p>Demonstrates a complete navbar including a mobile view menu toggle button (<a href="http://www.smartmenus.org/docs/#menu-toggle-button">related docs</a>).</p>
</div>
CSS
.main-nav {
border: 1px solid #bbb;
background: #fff;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 1px 41px rgba(0, 0, 0, 0.2);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2);
}
.main-nav:after {
clear: both;
content: "\00a0";
display: block;
height: 0;
font: 0px/0 serif;
overflow: hidden;
}
.nav-brand {
float: left;
margin: 0;
}
.nav-brand a {
display: block;
padding: 11px 11px 11px 20px;
color: #555;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 20px;
font-weight: normal;
line-height: 17px;
text-decoration: none;
}
#main-menu {
clear: both;
border: 0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
@media (min-width: 768px) {
#main-menu {
float: right;
clear: none;
}
}
/* Mobile menu toggle button */
.main-menu-btn {
float: right;
margin: 5px 10px;
position: relative;
display: inline-block;
width: 29px;
height: 29px;
text-indent: 29px;
white-space: nowrap;
overflow: hidden;
cursor: pointer;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
/* hamburger icon */
.main-menu-btn-icon,
.main-menu-btn-icon:before,
.main-menu-btn-icon:after {
position: absolute;
top: 50%;
left: 2px;
height: 2px;
width: 24px;
background: #555;
-webkit-transition: all 0.25s;
transition: all 0.25s;
}
.main-menu-btn-icon:before {
content: '';
top: -7px;
left: 0;
}
.main-menu-btn-icon:after {
content: '';
top: 7px;
left: 0;
}
/* x icon */
#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon {
height: 0;
background: transparent;
}
#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before {
top: 0;
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
}
#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after {
top: 0;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
/* hide menu state checkbox (keep it visible to screen readers)...
JavaScript
// SmartMenus init
$(function() {
$('#main-menu').smartmenus({
mainMenuSubOffsetX: -1,
subMenusSubOffsetX: 10,
subMenusSubOffsetY: 0
});
});
// SmartMenus mobile menu toggle button
$(function() {
var $mainMenuState = $('#main-menu-state');
if ($mainMenuState.length) {
// animate mobile menu
$mainMenuState.change(function(e) {
var $menu = $('#main-menu');
if (this.checked) {
$menu.hide().slideDown(250, function() {
$menu.css('display', '');
});
} else {
$menu.show().slideUp(250, function() {
$menu.css('display', '');
});
}
});
// hide mobile menu beforeunload
$(window).bind('beforeunload unload', function() {
if ($mainMenuState[0].checked) {
$mainMenuState[0].click();
}
});
}
});