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);

   ...