stickyNavbar.js

stickyNavbar.js: Fancy sticky navigation jQuery plugin with smart anchor link highlighting

Github stars Tracking Chart

stickyNavbar.js

stickyNavbar.js: Fancy sticky navigation jQuery plugin with smart anchor links highlighting

Maintainers Wanted

Because I no longer have time to support and maintain this plugin I am looking for developer who would like to take over this project and add new functionality, solve issues etc. You can contact me through my twitter account: @jozefbutko

1. Setup

Include reference to jQuery library, jQuery easing plugin (optional), animate.CSS (optional, not working in < IE9) and stickyNavbar itself at the bottom of the page before the closing body tag:

<!-- this goes inside the header tag-->
<link href="//cdnjs.cloudflare.com/ajax/libs/animate.css/3.0.0/animate.min.css" rel="stylesheet" type="text/css">
<!-- all these references goes before the closing body tag-->
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<script src="//cdn.jsdelivr.net/npm/stickyNavbar.js@1.3.3/jquery.stickyNavbar.min.js"></script>

2. HTML Markup

Navigation:

<div id="header" class="header">
	 <nav id="nav">
			 <ul class="nav navbar-nav">
					 <li>
						 <a href="#home">Home</a>
					 </li>
					 <li>
						 <a href="#about">About</a>
					 </li>
					 <li>
						 <a href="#services">Services</a>
					 </li>
					 <li>
						 <a href="#contact">Contact</a>
					 </li>
			 </ul>
	 </nav>
</div>

Body markup:

<div id="home" class="scrollto">
		<!-- Your content goes here -->
</div>
<div id="about" class="scrollto">
		<!-- Your content goes here -->
</div>
<div id="services" class="scrollto">
		<!-- Your content goes here -->
</div>
<div id="contact" class="scrollto">
		<!-- Your content goes here -->
</div>

3. CSS:

Add active class into your style.css and style it as you like, eg.:

.active {
		color: #fff !important;
		text-decoration: underline !important;
		-webkit-transform: translate3d(0, 0, 0);
		-moz-transform: translate3d(0, 0, 0);
		-o-transform: translate3d(0, 0, 0);
		-ms-transform: translate3d(0, 0, 0);
		transform: translate3d(0, 0, 0); // hardware acceleration of CSS animation
}

Note: You can change active class to anything you want and pass your own class into options object of stickyNavbar function.
Be sure to add top: 0 to .sticky class if you want your page to be scrolled on top after each page refresh and not to vertical position presents before page refresh.

4. jQuery:

Call stickyNavbar function on the navigation wrapper (.header), nav tag or ul tag either without options object:

$(function () {
	 $('.header').stickyNavbar();
});

or with the options object:

$(function () {
	$('.header').stickyNavbar({
		activeClass: "active", // Class to be added to highlight nav elements
		sectionSelector: "scrollto", // Class of the section that is interconnected with nav links
		animDuration: 350, // Duration of jQuery animation as well as jQuery scrolling duration
		startAt: 0, // Stick the menu at XXXpx from the top of the this() (nav container)
		easing: "swing", // Easing type if jqueryEffects = true, use jQuery Easing plugin to extend easing types - gsgd.co.uk/sandbox/jquery/easing
		animateCSS: true, // AnimateCSS effect on/off
		animateCSSRepeat: false, // Repeat animation everytime user scrolls
		cssAnimation: "fadeInDown", // AnimateCSS class that will be added to selector
		jqueryEffects: false, // jQuery animation on/off
		jqueryAnim: "slideDown", // jQuery animation type: fadeIn, show or slideDown
		selector: "a", // Selector to which activeClass will be added, either "a" or "li"
		mobile: false, // If false, nav will not stick under viewport width of 480px (default) or user defined mobileWidth
		mobileWidth: 480, // The viewport width (without scrollbar) under which stickyNavbar will not be applied (due user usability on mobile)
		zindex: 9999, // The zindex value to apply to the element: default 9999, other option is "auto"
		stickyModeClass: "sticky", // Class that will be applied to 'this' in sticky mode
		unstickyModeClass: "unsticky" // Class that will be applied to 'this' in non-sticky mode
	});
});

5. Demo

https://www.jozefbutko.com/stickynavbar/ or if you want to play with options: http://jsbin.com/wuluj/4/edit

6. Credits

jQuery
Animate.CSS
jQuery Easing Plugin

Contact

Copyright (C) 2014-2019 Jozef Butko
www.jozefbutko.com
www.github.com/jbutko
@jozefbutko

Changelog

1.3.5

  • missing single quote fix
    15/01/2019

1.3.4

  • support for relative links in navigation links
    20/10/2016

1.3.3

  • menuItemsHref incorrect selector causes errors - pull request #45 by @dimaip
    14/04/2016

1.3.2

  • add support for relative links
    04/10/2015

1.3.1

  • set keyboard focus improvement - pull request #28 by @theopolisme
  • bigger resolutions check by @gyduxa
    19/07/2015

1.3.0

  • set keyboard focus to selected section after navigation - pull request #26 by @jacktonkin
  • allow relative links - pull request #25 by @stebru
    06/06/2015

1.2.2

  • Improve highlighting of last menu item - pull request #24 by marspe
    15/05/2015

1.2.1

  • added npm package.json
    24/03/2015

1.2.0

  • new scrolling logic
  • fix: conditional checking if the selector option is an 'li' then get the child's href attribute - pull request #21 by @dbrw
    21/03/2015

1.1.3

  • scrolling bug fix
    20/09/2014

1.1.2

  • ignore external links and just let them open fix - pull request #15 by @Globegitter
    25/07/2014

1.1.1

  • just a readme file update
    23/07/2014

1.1.0

  • stickyMode/unstickyMode class added
  • custom mobileWidth for turning off stickyNavbar
  • window.outerWidth(true) changed to window.width() according to jQuery docs
  • optional z-index setting
  • added animation duration and easing for scrolling
  • bottomAnimation option removed (unstable behaviour)
  • navOffset option removed (unstable behaviour)
  • credits for feature requests/points: @Phyxion, @oniric85, @coolboy4598
    23/07/2014

1.0.5

  • animateCSSRepeat Fix
  • Inaccurate scrolling fix
    22.05.2014

1.0.4

  • Fix of the overlapped content by nav container after first click
  • Version number fix to 1.0.4
    10.04.2013

1.0.3

  • Flickering of CSS animation fix
    13.03.2014

1.0.2

  • Manifest update
    09.03.2014

1.0.1

  • stickyNavbar.js.jquery.json update
    09.03.2014

1.0.0

  • stickyNavbar.js.jquery.json update
    09.03.2014

Main metrics

Overview
Name With Ownerjbutko/stickyNavbar.js
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2014-03-08 21:14:21
Pushed At2023-01-27 01:38:29
Last Commit At2020-10-05 09:21:20
Release Count19
Last Release Name1.3.5 (Posted on )
First Release Name1.0.0 (Posted on )
用户参与
Stargazers Count283
Watchers Count17
Fork Count62
Commits Count109
Has Issues Enabled
Issues Count41
Issue Open Count9
Pull Requests Count13
Pull Requests Open Count12
Pull Requests Close Count10
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private