Example of a scrolling vertical menu - B. Urs
by Bogdan Urs
by Abra Cadabra
HTML
<script src="http://underscorejs.org/underscore-min.js"></script>
<div class="navbar">
<div class="navbar-inner" id="navbar-js-hook">
<ul class="navbar-list">
<li class="navbar-option"> <a href="#" class="subnav link-expanded navbar-main-link">User Setup</a>
<ul class="navbar-list">
<li class="navbar-option"> <a href="#">Users</a>
</li>
<li class="navbar-option"> <a href="#">User Types</a>
</li>
<li class="navbar-option"> <a href="#">Vendors</a>
</li>
<li class="navbar-option"> <a href="#">Workgroups</a>
</li>
<li class="navbar-option"> <a href="#">Clients</a>
</li>
<li class="navbar-option"> <a href="#">Preferences</a>
</li>
</ul>
</li>
<li class="navbar-option expanded"> <a href="#" class="subnav navbar-main-link">Asset Interface System</a>
<ul class="navbar-list">
<li class="navbar-option"> <a href="#">Users</a>
</li>
<li class="navbar-option"> <a href="#">User Types</a>
</li>
<li class="navbar-option"> <a href="#">Vendors</a>
</li>
<li class="navbar-option"> <a href="#">Workgroups</a>
</li>
<li class="navbar-option"> <a href="#">Clients</a>
</li>
<li class="navbar-option"> <a href="#">Preferences</a>
</li>
</ul>
</li>
<li class="navbar-option"> <a href="#" class="subnav navbar-main-link">Business Rules Linkage</a>
<ul class="navbar-list">
<li class="navbar-option"> <a href="#">Users</a>
...
CSS
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400, 700);
@import url(http://fonts.googleapis.com/css?family=Lato:400, 700);
@import url(http://netdna.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css);
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
font-size:100%;
font-weight:inherit;
font-style:inherit;
font-family:inherit;
vertical-align:baseline
}
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section, summary {
display:block
}
* {
-webkit-tap-highlight-color:rgba(0, 0, 0, 0);
-webkit-text-size-adjust:100%;
-ms-text-size-adjust:100%;
-webkit-font-smoothing:antialiased
}
a {
text-decoration:none
}
body {
line-height:1
}
ol, ul {
list-style-type:none
}
table {
border-collapse:collapse;
border-spacing:0
}
caption, th, td {
text-align:left;
font-weight:normal
}
input:not([type="checkbox"]), textarea {
-webkit-appearance:none;
-moz-appearance:none
}
input, textarea {
-webkit-border-radius:0;
-moz-border-radius:0
}
button, input[type="button"], input[type="submit"] {
background:none
}
:required {
-webkit-box-shadow:none;
-moz-box-shadow:none;
-o-box-shadow:none;
-ms-box-shadow:none;
box-shadow:none
}
em, i {
font-style:italic
}
strong, b {
font-weight:bold
}
u {
text-decoration:underline
}
pre, code {
font-family:Monaco, Courier, monospace
}
pre {
white-space:pre;
white-space:pre-wrap;
...
JavaScript
var UI_Utils = (function ($) {
var _selectedElement;
var _checkIfMenuSelected = _.once(function (e) {
_selectedElement = $(e.delegateTarget).find('.selected').first();
});
var toggleMainMenuLinks = function (e, elem) {
var menuElem = elem.parent();
_checkIfMenuSelected(e);
if (_selectedElement.length === 0) {
_selectedElement = menuElem.addClass('selected');
} else {
_selectedElement.removeClass('selected');
_selectedElement = menuElem.addClass('selected');
}
};
var toggleMainMenuTabs = function (elem) {
elem.parent().toggleClass('expanded');
elem.siblings('ul').find('.selected').first().removeClass('selected');
};
var mainMenuTabsHandler = function (e) {
e.preventDefault();
var self = $(this);
if (self.hasClass('subnav')) {
toggleMainMenuTabs(self);
} else {
toggleMainMenuLinks(e, self);
}
};
return {
toggleMainMenuLinks: toggleMainMenuLinks,
toggleMainMenuTabs: toggleMainMenuTabs,
mainMenuTabsHandler: mainMenuTabsHandler
};
})(jQuery);
// the DOM ready
$(document).ready(function () {
$("#navbar-js-hook").on('click', 'a', UI_Utils.mainMenuTabsHandler);
});