Skip to content

Instantly share code, notes, and snippets.

@mminguezz
Forked from javierarques/sticky.js
Created August 29, 2018 10:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mminguezz/8aa24d3a8b0f752b7a5f44a4f41483fe to your computer and use it in GitHub Desktop.
Save mminguezz/8aa24d3a8b0f752b7a5f44a4f41483fe to your computer and use it in GitHub Desktop.
Sticky Sideabr With Vanilla Javascript. Detects scroll and set fixed the element. Live example: http://codepen.io/javiarques/pen/vKdgjR
// Sticky Nav Component
var Sticky = (function() {
'use strict';
var CSS_CLASS_ACTIVE = 'is-fixed';
var Sticky = {
element: null,
position: 0,
addEvents: function() {
window.addEventListener('scroll', this.onScroll.bind(this));
},
init: function(element) {
this.element = element;
this.addEvents();
this.position = element.offsetTop ;
this.onScroll();
},
aboveScroll: function() {
return this.position < window.scrollY;
},
onScroll: function(event) {
if (this.aboveScroll()) {
this.setFixed();
} else {
this.setStatic();
}
},
setFixed: function() {
this.element.classList.add(CSS_CLASS_ACTIVE);
// not needed if added with CSS Class
this.element.style.position = 'fixed';
this.element.style.top = 0;
},
setStatic: function() {
this.element.classList.remove(CSS_CLASS_ACTIVE);
// not needed if added with CSS Class
this.element.style.position = 'static';
this.element.style.top = 'auto';
}
};
return Sticky;
})();
// Init Sticky
var sticky = document.querySelector('.sticky');
if (sticky)
Sticky.init(sticky);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment