Hide navbar on scroll
Fixed navbar that slides out of view when scrolling down and slides back in when scrolling up. Based on a lightweight, high-performance headroom.jsextension that allows you to react to the user's scroll. This is a perfect solution, if you alqays want to access your navbar, but bring elements into view when appropriate, and give focus to your content the rest of the time. Supports topand bottomplacements. Table below contains all plugin options available and can be applied to both top and bottom fixed navbars.
Configuration options

At it's most basic headroom.jssimply adds and removes CSS classes from an element in response to a scroll event. Headroom.js can also accept an options object to alter the way it behaves. You can see the default options by inspecting Headroom.options. Relying on CSS classes affords headroom.js incredible flexibility. The choice of what to do when scrolling up or down is now entirely yours - anything you can do with CSS you can do in response to the user's scroll. The structure of an options object is as follows:

Option Description
offset Vertical offset in px before element is first unpinned. Value for default navbar is 48pxor element.offsetHeightfor dynamic calculation.
tolerance Scroll tolerance in px before state changes. Or you can specify tolerance individually for up/down scroll: upand down.
classes CSS classes to apply: initial- when element is initialised, pinned- when scrolling up, unpinned- when scrolling down, top- when above offset, notTop- when below offset, bottom- when at bottom of scoll area, notBottom- when not at bottom of scroll area
scroller Element to listen to scroll events on, defaults to `window`
onPin : function() {} Callback when pinned, 'this'is headroom object
onUnpin : function() {} Callback when unpinned, 'this'is headroom object
onTop : function() {} Callback when above offset, 'this'is headroom object
onNotTop : function() {} Callback when below offset, 'this'is headroom object
onBottom : function() {} Callback at bottom of page, 'this'is headroom object
onNotBottom : function() {} Callback when moving away from bottom of page, 'this'is headroom object
Configuration examples

Headroom.js allows you to bring navbars into view when appropriate and give focus to your content the rest of the time. Configuration is very simple and is similar to fixed navbars: add .fixed-topto top navbar and/or .fixed-bottomto bottom navbar and initialize headroom.js on these classes with options. Note - if your navbar has dropdowns, use code from onUnpinevent to close all dropdowns when navbar gets hidden.

Top hideable navbar markup:

<!-- Document body --><body class="navbar-top">  <!-- Main navbar --> <div class="navbar navbar-dark navbar-expand-md fixed-top">          <!-- Navbar brand -->                <div class="navbar-brand">                   ...             </div>               <!-- /navbar brand -->               <!-- Mobile toggler -->              <div class="d-md-none">                      ...             </div>               <!-- /mobile toggler -->             <!-- Navbar content -->              <div class="collapse navbar-collapse" id="navbar-top">                       ...             </div>               <!-- /navbar content -->     </div>       <!-- /main navbar --></body><!-- /document body -->

Top hideable navbar config:

// Grab an elementvar navbarTop = document.querySelector('.fixed-top');// Construct an instance of Headroom, passing the elementvar headroomTop  = new Headroom(navbarTop, {    offset: navbarTop.offsetHeight,    tolerance: {        up: 10,        down: 0    },    onUnpin : function() {        $('.navbar').find('.show').removeClass('show');    }});// InitialiseheadroomTop.init(); 

Bottom hideable navbar markup:

<!-- Document body --><body class="navbar-bottom">   <!-- Main navbar --> <div class="navbar navbar-dark navbar-expand-md fixed-bottom">               <!-- Navbar brand -->                <div class="navbar-brand">                   ...             </div>               <!-- /navbar brand -->               <!-- Mobile toggler -->              <div class="d-md-none">                      ...             </div>               <!-- /mobile toggler -->             <!-- Navbar content -->              <div class="collapse navbar-collapse" id="navbar-bottom">                    ...             </div>               <!-- /navbar content -->     </div>       <!-- /main navbar --></body><!-- /document body -->

Bottom hideable navbar config:

// Grab an elementvar navbarBottom = document.querySelector('.fixed-bottom');// Construct an instance of Headroom, passing the elementvar headroomBottom  = new Headroom(navbarBottom, {    offset: navbarBottom.offsetHeight,    tolerance: {        up: 0,        down: 10    },    onUnpin : function() {        $('.navbar').find('.show').removeClass('show');    }});// InitialiseheadroomBottom.init(); 
Navbar classes
Navbar is a complex, but very flexible component. It supports different types of content, responsive utilities manage content appearance and spacing on various screen sizes, supports multiple sizing and color options etc. And everything can be changed on-the-fly directly in HTML markup. If you can't find an option you need, you can always extend default SCSS code. Table below demonstrates all available classes that can be used within the navbar:
Class Type Description
.navbar Required Default navbar class, must be used with any navbar type and color. Responsible for basic navbar and navbar components styling as a parent container.
.navbar-light Required This class is used for darkbackground colors - default dark color is set in $navbar-light-bgvariable, feel free to adjust the color according to your needs.
.navbar-light.alpha-* Optional Combination of these classes allows you to set custom lightcolor to the lightnavbar. Note - .navbar-lightis required, it's responsible for correct content styling.
.navbar-dark Required This class is used for darkbackground colors - default dark color is set in $navbar-dark-bgvariable, feel free to adjust the color according to your needs.
.navbar-dark.bg-* Optional Combination of these classes allows you to set custom darkcolor to the darknavbar. Note - .navbar-darkis required, it's responsible for correct content styling.
.navbar-expand-[breakpoint] Optional For navbars that never collapse, add the .navbar-expandclass on the navbar. For navbars that always collapse, don’t add any .navbar-expandclass. Otherwise use this class to change when navbar content collapses behind a button.
.navbar-brand Required Class for logo container. It can be applied to most elements, but an anchor works best as some elements might require utility classes or custom styles
.navbar-toggler Required This class needs to be added to the navbar toggle button that toggles navbar content on small screens. Always used with visibility utility classes.
.navbar-collapse Required Groups and hides navbar contents by a parent breakpoint. Requires an ID for targeting collapsible container when sidebar content is collapsed.
.navbar-nav Required Responsive navigation container class that adds default styling for navbar navigation.
.nav-item Required Wrapper class for immediate parents of all navigation links. Responsible for correct styling of nav items
.navbar-nav-link Required Custom class for links within .navbar-navlist, it sets proper styling for links in light and dark navbars.
.navbar-text Required This class adjusts vertical alignment and horizontal spacing for strings of text
.navbar-component Optional Display navbar as a stand alone component, with border and rounded corners.
.fixed-top Optional Makes navbar sticked to the topof the page. Requires proper class for <body>container, see the table below.
.fixed-bottom Optional Makes navbar sticked to the bottomof the page. Requires proper class for <body>container, see the table below.
.sticky-top Optional Adds position: sticky;to the navbar - it's treated as relatively positioned until its containing block crosses a specified threshold, at which point it is treated as fixed. Support is limited.
Body classes
If you want to place navbar in non-static positions, you can choose from fixed to the top, fixed to the bottom, or stickied to the top (scrolls with the page until it reaches the top, then stays there). Fixed navbars use position: fixed, meaning they’re pulled from the normal flow of the DOM and require custom classes added to the <body>container to prevent overlap with other elements. The following table demonstrates the list of classes for <body>container if navbar has non-static position:
Class Description
.navbar-top This class adds toppadding to the <body>container. Works only with default navbar height. If another height is specified, apply another class (see the line below).
.navbar-bottom This class adds bottompadding to the <body>container. Works only with default navbar height. If another height is specified, apply another class (see the line below).
.navbar-top-[size] Controls topspacing of <body>container, if navbar has optional height. Available sizes: small (*-sm) and large (*-lg). Default navbar requires .navbar-topclass only.
.navbar-bottom-[size] Controls bottomspacing of <body>container, if navbar has optional height. Available sizes: small (*-sm) and large (*-lg). Default navbar requires .navbar-bottomclass only.
.navbar-top-[size]-[size] Use these classes if the layout has multiple topnavbars, where first [size]is the size of the first navbar, second [size]- height of the second navbar. In this particular use case, [size]can be: lgif large height, mdis default height smis small height.
.navbar-bottom-[size]-[size] Use these classes if the layout has multiple bottomnavbars, where first [size]is the size of the first navbar, second [size]- height of the second navbar. In this particular use case, [size]can be: lgif large height, mdis default height smis small height.