JSFiddle - React, Tailwind, and code Playground
Reside Menu
by Jennifer Perrin
HTML
<div class="main_nav">
<ul class="menu">
<li><a href="index.php">Dashboard</a></li>
<li><a href="" class="active">My Lease</a>
<ul>
<li><a href="">Property Details</a></li>
<li><a href="">Payment History</a></li>
<li><a href="">Documents</a></li>
</ul>
</li>
<li><a href="">Help/Service Request</a>
<ul>
<li><a href="">Service History</a></li>
<li><a href="">Request Service</a></li>
</ul>
</li>
<li><a href="">My Account</a></li>
<li><a href="">Log Out</a></li>
</ul>
</div>
CSS
@import url(http://fonts.googleapis.com/css?family=Raleway);
.main_nav {
top: 5px;
display: block;
float: right;
font-family: 'Raleway';
}
.menu, .menu ul {
margin: 0;
padding: 0;
list-style: none;
display: block;
}
.menu { zoom:1; }
.menu:before, .menu:after {
content: "";
display: table;
}
.menu:after { clear: both; }
.menu li {
float: left;
position: relative;
}
.menu a {
float: left;
margin: 0 30px 0 0;
color: #888;
text-decoration: none;
padding: 10px 0;
}
.menu a.active { color: #f15a23; }
.menu li:hover > a { color: #f15a23; }
.menu li li > a {
background-color: #f4f4f4;
border:1px solid rgba(0,0,0,0.15);
color:#2d2d2d !important;
}
.menu li li:hover > a {
color: #f15a23;
background-color: #fff;
}
/* IE6 only */
*html .menu li a:hover { color: #f15a23; }
.menu ul {
margin: 10px 0 0 0;
_margin: 0; /*IE6 only*/
opacity: 0;
visibility: hidden;
position: absolute;
top: 40px;
left: 0;
z-index: 1000;
background: #fff;
transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
}
.menu li:hover > ul {
opacity: 1;
visibility: visible;
margin: 0;
}
.menu ul ul {
top: -3px;
left: 200px;
margin: 0 0 0 10px;
_margin: 0;
}
.menu ul li {
float: none;
display: block;
border: 0;
_line-height: 0; /*IE6 only*/
border-bottom: 1px solid #f1f1f1;
}
.menu ul a {
min-width: 150px;
_height: 10px; /*IE6 only*/
display: block;
float: none;
text-transform: none;
margin: 0;
padding: 8px 0;
border-top: 1px solid #fff;
font-size: 12px;
}
.menu ul a.active { color: #f15a23; }
.menu ul a { padding-left: 10px; }
.menu ul a:hover { background-color: #fff; }
/* styles for desktop */
.tinynav { display: none; }
/* styles for mobile */
@media screen and (max-width: 40em) {
.main_nav {
width: 100%;
float: none;
}
.tinynav { display: block; width: 100%; }
.menu { display: none; }
...
JavaScript
$(document).ready(function() {
(function($, window, i) {
$.fn.tinyNav = function(options) {
// Default settings
var settings = $.extend({
'active': 'selected',
// String: Set the "active" class
'header': false // Boolean: Show header instead of the active item
}, options);
return this.each(function() {
// Used for namespacing
i++;
var $nav = $(this),
// Namespacing
namespace = 'tinynav',
namespace_i = namespace + i,
l_namespace_i = '.l_' + namespace_i,
$select = $('<select/>').addClass(namespace + ' ' + namespace_i);
if ($nav.is('ul,ol')) {
if (settings.header) {
$select.append(
$('<option/>').text('Navigation'));
}
// Build options
var options = '';
$nav.addClass('l_' + namespace_i).find('a').each(function() {
if ($(this).hasClass("active")) {
options += '<option value="' + $(this).attr('href') + '" selected="selected">' + $(this).text() + '</option>';
} else {
options += '<option value="' + $(this).attr('href') + '" >' + $(this).text() + '</option>';
}
});
// Append options into a select
$select.append(options);
// Change window location
$select.change(function() {
window.location.href = $(this).val();
});
// Inject select
$(l_namespace_i).after($select);
}
});
};
})(jQuery, this, 0);
...