JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="http://meyerweb.com/eric/tools/css/reset/reset.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<body>
<div id="wrapper">
<header class="cf">
<h1>LOGO</h1>
<nav>
<ul class="slimmenu">
<li><a href="#">Link 1</a></li>
<ul>
<li>something</li>
</ul>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
<li><a href="#">Link 4</a></li>
</ul>
</nav>
</header>
</div>
</body>
CSS
/* page styles */
body {
font-family: 'Lucida Sans Unicode', 'Lucida Console', sans-serif;
padding: 0;
}
#wrapper {
max-width: 860px;
margin: 0 auto;
}
header {
position: relative;
background-color: #787f8a;
}
header h1 {
float: left;
color: #f2f2f2;
padding: 15px 15px 10px 15px;
}
header nav {
float: right;
}
/* clearfix */
.cf:before, .cf:after { content: ""; display: table; }
.cf:after { clear: both; }
.cf { *zoom: 1; }
/* slimmenu styles */
.menu-collapser {
position: relative;
background-color: #787f8a;
color: #FFF;
text-shadow: 0 1px 0 rgba(0,0,0,0.5);
width: 100%;
height: 48px;
line-height: 48px;
font-size: 16px;
padding: 0 8px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box
}
.collapse-button {
position: absolute;
right: 8px;
top: 50%;
width: 40px;
background-color: #0E0E0E;
background-image: linear-gradient(to bottom, #151515, #040404);
background-repeat: repeat-x;
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
border-radius: 4px 4px 4px 4px;
border-style: solid;
border-width: 1px;
color: #FFFFFF;
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1) inset, 0 1px 0 rgba(255, 255, 255, 0.075);
padding: 7px 10px;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
cursor: pointer;
font-size: 14px;
text-align: center;
transform: translate(0, -50%);
-o-transform: translate(0, -50%);
-ms-transform: translate(0, -50%);
-moz-transform: translate(0, -50%);
-webkit-transform: translate(0, -50%);
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box
}
.collapse-button:hover, .collapse-button:focus {
background-image: none;
background-color: #040404;
color: #FFF;
}
.collapse-button .icon-bar {
background-color: #F5F5F5;
border-radius: 1px 1px 1px 1px;
...
JavaScript
/**
* jquery.slimmenu.js
* http://adnantopal.github.io/slimmenu/
* Author: @adnantopal
* Copyright 2013, Adnan Topal (atopal.com)
* Licensed under the MIT license.
*/
;(function ( $, window, document, undefined )
{
var pluginName = "slimmenu",
defaults =
{
resizeWidth: '768',
collapserTitle: 'Main Menu',
animSpeed: 'medium',
easingEffect: null,
indentChildren: false,
childrenIndenter: ' '
};
function Plugin( element, options )
{
this.element = element;
this.$elem = $(this.element);
this.options = $.extend( {}, defaults, options );
this.init();
}
Plugin.prototype = {
init: function()
{
var $options = this.options,
$menu = this.$elem,
$collapser = '<div class="menu-collapser">'+$options.collapserTitle+'<div class="collapse-button"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></div></div>',
$menu_collapser;
$menu.before($collapser);
$menu_collapser = $menu.prev('.menu-collapser');
$menu.on('click', '.sub-collapser', function(e)
{
e.preventDefault();
e.stopPropagation();
var $parent_li = $(this).closest('li');
if ($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
$(this).find('i').html('▼');
$parent_li.find('>ul').slideUp($options.animSpeed, $options.easingEffect);
}
else
{
$(this).addClass('expanded');
$(this).find('i').html('▲');
$parent_li.find('>ul').slideDown($options.animSpeed, $options.easingEffect);
}
});
...