https://github.com/yowainwright/scrolldir
0 dependency JS plugin to leverage scroll direction with CSS β¬β¬ ππ
https://github.com/yowainwright/scrolldir
Last synced: 9 months ago
JSON representation
0 dependency JS plugin to leverage scroll direction with CSS β¬β¬ ππ
- Host: GitHub
- URL: https://github.com/yowainwright/scrolldir
- Owner: yowainwright
- License: mit
- Fork: true (dollarshaveclub/scrolldir)
- Created: 2020-02-25T07:55:24.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-01-27T14:13:42.000Z (over 1 year ago)
- Last Synced: 2025-09-19T05:29:47.904Z (10 months ago)
- Language: JavaScript
- Homepage: https://jeffry.in/scrolldir/
- Size: 2.33 MB
- Stars: 40
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README

Leverage Vertical Scroll Direction with CSS π
ScrollDir β¬β¬
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. πͺ
### ScrollDir is perfect for:
- 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 π
## Usage
ScrollDir will set the `data-scrolldir` attribute on the `` element to `up` or `down`:
```html
```
or
```html
```
Now itβs easy to change styles based on the direction the user is scrolling!
```css
[data-scrolldir="down"] .my-fixed-header {
display: none;
}
```
## In Action π₯
## Install π¦
npm
```sh
npm install scrolldir --save
```
bower
```sh
bower install scrolldir --save
```
yarn
```sh
yarn add scrolldir
```
## Setup π€
### Easy Mode
Add **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"]`.
### Custom Mode π
Add **dist/scrolldir.min.js**. You have access to the API options below and must invoke scrollDir.
```javascript
scrollDir();
```
To use an attribute besides `data-scrolldir`:
```javascript
scrollDir({ attribute: "new-attribute-name" });
```
To add the Scrolldir attribute to a different element:
```javascript
scrollDir({ el: "your-new-selector" });
```
To turn Scrolldir off:
```javascript
scrollDir({ off: true });
```
To turn provide a different scroll direction on page load (or app start):
```javascript
scrollDir({ dir: "up" }); // the default is 'down'
```
To change the `thresholdPixels`βthe number of pixels to scroll before re-evaluating the direction:
```javascript
scrollDir({ thresholdPixels: someNumber }); // the default is 64 pixels
// example: scrollDir({ thresholdPixels: 10 })
```
## Example π΄
- [scrolldir](http://codepen.io/yowainwright/pen/9d5a6c6dcf2c17e351dcccfe98158e8b) on codepen.
This is a modular version of [pwfisher](https://github.com/pwfisher)'s [scroll-intent](https://github.com/pwfisher/scroll-intent.js). 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!