Leverage Vertical Scroll Direction with CSS π
ScrollDir, short for Scroll Direction, is a 0 dependency, ~1kb micro Javascript plugin to easily leverage vertical scroll direction in CSS via a data attribute. πͺ
- showing or hiding sticky elements based on scroll direction π₯
- only changing its direction attribute when scrolled a significant amount π₯
- ignoring small scroll movements that cause unwanted jitters π
ScrollDir will set the data-scrolldir attribute on the <html> element to up or down:
<html data-scrolldir="up">or
<html data-scrolldir="down">Now itβs easy to change styles based on the direction the user is scrolling!
[data-scrolldir="down"] .my-fixed-header { display: none; }npm
npm install scrolldir --savebower
bower install scrolldir --saveyarn
yarn add scrolldirAdd dist/scrolldir.auto.min.js and youβre done. There is nothing more to do! Scrolldir will just work.
Now go write some styles using [data-scrolldir="down"] and [data-scrolldir="up"].
Add dist/scrolldir.min.js. You have access to the API options below and must invoke scrollDir.
const scrollDir = new ScrollDir({
onChange: function(dir, enabled) {
console.log('direction: ', dir, 'enabled: ', enabled);
}
});To use an attribute besides data-scrolldir:
const scrollDir = new ScrollDir({ attribute: 'new-attribute-name' });To add the Scrolldir attribute to a different element:
const scrollDir = new ScrollDir({ el: 'your-new-selector' });To turn Scrolldir off:
const scrollDir = new ScrollDir();
scrollDir.setOptions({ off: true });To turn provide a different scroll direction on page load (or app start):
const scrollDir = new ScrollDir({ dir: 'up' }); // the default is 'down'- scrolldir on codepen.
This is a modular version of pwfisher's scroll-intent. If you'd like to use scrolldir with jQueryβuse Scroll Intent. Scrolldir should work easily within any front-end framework so it ditches library dependencies. ~TY!
