🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

A Simple jQuery Plugin extending animateScroll plugin with Single Page Scroll Capabilities.Features:Smooth, continous scroll across sectionsAbility to navigate to each and every section, also programaticallyPossible menu integration, but I didin’t want menu to be included as part of a packageEach section can have different heightIf section height is less then screen height – it can be adjustedIf section is higher then screen – we’re coolIt would support History API

Animation Menus Plugins

Documentation

AnimateScrollNavigation.js

Code Climate

A Simple jQuery Plugin extending animateScroll plugin with Single Page Scroll Capabilities

You can see demo here.

Why bother?

I needed jQuery plugin allowing me to nicely navigate around single page website and none I could find had all fetures I needed:

  • Smooth, continous scroll across sections
  • Ability to navigate to each and every section, also programatically
  • Possible menu integration, but I didin't want menu to be included as part of a package
  • Each section can have different hight
  • If section height is less then screen height - it can be adjusted
  • If section is higher then screen - we're cool
  • It had to support anchor links to sections, i.e. #section1
  • It would support History API

This is why I bothered writing this plugin. If its features are what you are looking for - that's perfect! :)

INSTALLATION

via bower:

bower install animatescroll-navigation 

or simply download latest source code from repository: link

USAGE

First of all - you'll need jQuery, so make sure to include it before plugin itself. Plugin works with both v1.x and 2.x versions. You can use CDN if you'd like.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Secondly: This plugin uses animateScroll for handling all transitions, please also include it before animateScrollNavigation.js

<script src="path/to/animatescroll.min.js"></script>

Now: animateScrollNavigation.js

<script src="path/to/animate_scroll_navigation.min.js"></script>

animateScrollNavigation.js uses simple markup: one container, on which you call this plugin and an number of elements inside of it. You can set them with CSS selector, but it defaults to .section. Every section has to have id with anchor name, i.e. id="section3" - this is good, because you can always fallback to regular anchor link behaviour.

Let's say you'd like to have container #fullPage and standard sections containers .section:

<div id="fullpage">     <div class="section" id="section1">         section1     </div>     <div class="section" id="section2">         section2     </div>     <div class="section" id="section3">         section3     </div>     <div class="section" id="section4">         section4     </div> </div>

After that only thing left to do is init animateScrollNavigation.js with default options by calling:

$(document).ready(function(){     $('#fullpage').animateScrollNavigation(); });

Whole thing would look something like this:

<!DOCTYPE html> <html>     <head>         <title>animateScrollNavigation.js Demo</title>     </head>     <body>         <div id="fullpage">             <div class="section" id="section1">                 section1             </div>             <div class="section" id="section2">                 section2             </div>             <div class="section" id="section3">                 section3             </div>             <div class="section" id="section4">                 section4             </div>         </div>         <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>         <script src="../bower_components/animatescroll/animatescroll.min.js"></script>         <script src="../dist/animate_scroll_navigation.min.js"></script>         <script>             $(document).ready(function(){                 $('#fullpage').animateScrollNavigation();             });         </script>     </body> </html>

Options

animateScrollNavigation.js accepts couple of parameters/startup options:

$('#fullpage').animateScrollNavigation({         // selector for elements containing sections         element: '.section',          // determines if sections height should be calculated to match screen height         fullPage: true,          // disable animation (usefull for older browsers, etc.)         noAnimation: false,          // you can pass all animateScroll options, they will become global for all elements in navigation         animateScrollOptions: {}     });

API

There are few methods allowing to programatically use this navigation. Assuming you are using #fullpage as a selector, you can do some nce things, like:

Go to next section with:

$('#fullpage').animateScrollNavigation('next');

... or to previous section:

$('#fullpage').animateScrollNavigation('previous');

In order to go to particular section (i.e. section2), you can use this:

$('#fullpage').animateScrollNavigation('goTo', 'section2');

... or you can use sections ID. They are numbered from 0 up:

$('#fullpage').animateScrollNavigation('goTo', 1);

In order to get current section:

$('#fullpage').animateScrollNavigation('getCurrent');  // you'll get: //  { //      id: currentElementId, //      max: allElementsCount //  }

As this is based on animateScroll, you can go to any element, even not included in Navigation markup by calling goToAny() with CSS selector as a first parameter. You can also pass any animateScroll options and optionally turn of any animation (defaults to false):

$('#fullpage').animateScrollNavigation('goToAny', 'your-css-selector', animateScrollOptions, noAnimation);

Building / Minifing

You can build minified version yourself, by simply using Grunt in project root.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

You May Also Like