/headhesive.js

An on-demand sticky header.

Primary LanguageJavaScriptMIT LicenseMIT

Headhesive.js

An on-demand sticky header.

What is it?

Headhesive.js creates an on-demand sticky header. Specify when you want your header to become fixed and the rest is magic. View demo.

Install

Install with npm:

npm install headhesive

Install with Bower:

bower install headhesive (or bower install headhesive.js)

How to use?

Headhesive.js is a standalone JavaScript plugin with no dependencies. Include the headhesive.min.js (from the dist/ folder) in the footer of your page and initialise it:

// Create a new instance of Headhesive
var header = new Headhesive('.header');

Styling Headhesive.js

Headhesive.js doesn't inject any CSS styles so you can use your own to completely control how your sticky element behaves. An example is provided in the demo.

Options

Customise how Headhesive.js works by passing in custom options.

// Options
var options = {
  offset: 500
}

// Create a new instance of Headhesive.js and pass in some options
var header = new Headhesive('.header', options);

Defaults

{
  // Scroll offset. Accepts Number or "String" (for class/ID)
  offset: 300, // OR — offset: '.classToActivateAt',

  // If using a DOM element, we can choose which side to use as offset (top|bottom)
  offsetSide: 'top',

  // Custom classes
  classes: {

    // Cloned elem class
    clone: 'headhesive',

    // Stick class
    stick: 'headhesive--stick',

    // Unstick class
    unstick: 'headhesive--unstick'
  },

  // Throttle scroll event to fire every 250ms to improve performace
  throttle: 250,

  // Callbacks
  onInit:    function () {},
  onStick:   function () {},
  onUnstick: function () {},
  onDestroy: function () {},
}

Destroy method

To destroy an instance of Headhesive.js, you can call the destroy method:

header.destroy();

Browser support

IE9+ and modern browsers.

License

Headesive.js is licensed under the MIT License.

Demo

There is a demo available in the demo folder and online at http://markgoodyear.com/labs/headhesive/.