AutoHide Navbar
HTML
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.1.1/js/bootstrap.min.js"></script>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Auto hiding navbar</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li class="dropdown-header">Nav header</li>
<li><a href="#">Separated link</a></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Default</a></li>
</ul>
</div>
</div>
</div>
<div class="container content">
<p class="demo-long">
Long content...
</p>
<p class="demo-long">
Long...
CSS
.demo-long {
margin-top: 100px;
margin-bottom: 200px;
}
.content{
background-color: white;
margin: 10px auto;
width: 95%;
}
.navbar{
background-color: yellow;
margin-top: 35px;
}
JavaScript
/*Couldnt find a hosted version of this so skip to the end ... this is the jquery.bootstrap-autohidingnavbar.js*/
;(function($, window, document, undefined) {
var pluginName = 'autoHidingNavbar',
$window = $(window),
$document = $(document),
_scrollThrottleTimer = null,
_resizeThrottleTimer = null,
_throttleDelay = 70,
_lastScrollHandlerRun = 0,
_previousScrollTop = null,
_windowHeight = $window.height(),
_visible = true,
_hideOffset,
defaults = {
disableAutohide: false,
showOnUpscroll: true,
showOnBottom: true,
hideOffset: 'auto', // "auto" means the navbar height
animationDuration: 200
};
function AutoHidingNavbar(element, options) {
this.element = $(element);
this.settings = $.extend({}, defaults, options);
this._defaults = defaults;
this._name = pluginName;
this.init();
}
function hide(autoHidingNavbar) {
if (!_visible) {
return;
}
autoHidingNavbar.element.addClass('navbar-hidden').animate({
top: -autoHidingNavbar.element.height()- autoHidingNavbar.element.offset().top
}, {
queue: false,
duration: autoHidingNavbar.settings.animationDuration
});
$('.dropdown.open .dropdown-toggle', autoHidingNavbar.element).dropdown('toggle');
_visible = false;
}
function show(autoHidingNavbar) {
if (_visible) {
return;
}
autoHidingNavbar.element.removeClass('navbar-hidden').animate({
top: 0
}, {
queue: false,
duration: autoHidingNavbar.settings.animationDuration
});
_visible = true;
}
function detectState(autoHidingNavbar) {
var scrollTop = $window.scrollTop(),
scrollDelta = scrollTop - _previousScrollTop;
_previousScrollTop = scrollTop;
if (scrollDelta < 0) {
if (_visible) {
return;
}
if (autoHidingNavbar.settings.showOnUpscroll || scrollTop <= _hideOffset) {
...