• Stars
    star
    3,472
  • Rank 12,493 (Top 0.3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 9 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A modern smooth scrolling library.

Jump.js

Jump.js on NPM Jump.js Downloads on NPM Standard JavaScript Style

A modern smooth scrolling library.

Usage

Jump was developed with a modern JavaScript workflow in mind. To use it, it's recommended you have a build system in place that can transpile ES6, and bundle modules. For a minimal boilerplate that fulfills those requirements, check out outset.

Follow these steps to get started:

  1. Install
  2. Import
  3. Call
  4. Review Options

Install

Using NPM, install Jump, and save it to your package.json dependencies.

$ npm install jump.js --save

Import

Import Jump, naming it according to your preference.

// import Jump

import jump from 'jump.js'

Call

Jump exports a singleton, so there's no need to create an instance. Just call it, passing a target.

// call Jump, passing a target

jump('.target')

Note that the singleton can make an infinite number of jumps.

Options

All options, except target, are optional, and have sensible defaults. The defaults are shown below:

jump('.target', {
  duration: 1000,
  offset: 0,
  callback: undefined,
  easing: easeInOutQuad,
  a11y: false
})

Explanation of each option follows:

target

Scroll from the current position by passing a number of pixels.

// scroll down 100px

jump(100)

// scroll up 100px

jump(-100)

Or, scroll to an element, by passing either:

  • a node, or
  • a CSS selector
// passing a node

const node = document.querySelector('.target')

jump(node)

// passing a CSS selector
// the element referenced by the selector is determined using document.querySelector

jump('.target')

duration

Pass the time the jump() takes, in milliseconds.

jump('.target', {
  duration: 1000
})

Or, pass a function that returns the duration of the jump() in milliseconds. This function is passed the jump() distance, in px, as a parameter.

jump('.target', {
  duration: distance => Math.abs(distance)
})

offset

Offset a jump(), only if to an element, by a number of pixels.

// stop 10px before the top of the element

jump('.target', {
  offset: -10
})

// stop 10px after the top of the element

jump('.target', {
  offset: 10
})

Note that this option is useful for accommodating position: fixed elements.

callback

Pass a function that will be called after the jump() has been completed.

// in both regular and arrow functions, this === window

jump('.target', {
  callback: () => console.log('Jump completed!')
})

easing

Easing function used to transition the jump().

jump('.target', {
  easing: easeInOutQuad
})

See easing.js for the definition of easeInOutQuad, the default easing function. Credit for this function goes to Robert Penner.

a11y

If enabled, and scrolling to an element:

jump('.target', {
  a11y: true
})

Note that this option is disabled by default because it has visual implications in many browsers. Focusing an element triggers the :focus CSS state selector, and is often accompanied by an outline.

Browser Support

Jump depends on the following browser APIs:

Consequently, it supports the following natively:

  • Chrome 24+
  • Firefox 23+
  • Safari 6.1+
  • Opera 15+
  • IE 10+
  • iOS Safari 7.1+
  • Android Browser 4.4+

To add support for older browsers, consider including polyfills/shims for the APIs listed above. There are no plans to include any in the library, in the interest of file size.

License

MIT. Β© 2017 Michael Cavalea

Built With Love

More Repositories

1

layzr.js

A modern lazy loading library for images.
JavaScript
5,575
star
2

bricks.js

A blazing fast masonry layout generator for fixed width elements.
JavaScript
4,657
star
3

gotem

Copy to clipboard for modern browsers in less than 1kb.
JavaScript
429
star
4

outset

A minimal frontend boilerplate, emphasizing workflow.
SCSS
170
star
5

knot.js

A browser-based event emitter, for tying things together.
JavaScript
105
star
6

heading-links.js

A small, dependency-free library for deep linking headings - GitHub style.
JavaScript
66
star
7

text-split

Text wrapping for type animations.
JavaScript
46
star
8

nuclear.css

An experiment in generating atomic, immutable, class-based CSS.
CSS
23
star
9

stockpile.js

A tiny localStorage wrapper providing namespacing and typed values.
JavaScript
18
star
10

hsx

Static HTML sites with JSX and webpack (no React).
JavaScript
16
star
11

string-dom

Create HTML strings using JSX (or functions).
JavaScript
13
star
12

maximize.js

A tiny wrapper for cross-browser requestFullscreen.
JavaScript
13
star
13

obzerv

A convenient wrapper around IntersectionObserver for tracking element position relative to the viewport.
JavaScript
11
star
14

string-css

Create CSS-in-JS via tagged template strings.
JavaScript
10
star
15

tail-end

Promise-wrapped CSS animations and transitions (async/await friendly).
HTML
8
star
16

bandito

Boilerplate for mostly-static React frontends.
JavaScript
8
star
17

jax.js

A tiny Promise wrapper for GET requests.
JavaScript
8
star
18

xec

An async script loader, for the browser, built on Promises.
JavaScript
8
star
19

evented-viewport

Viewport width and height utility for JavaScript modules.
JavaScript
7
star
20

ajax-component

A Custom Element that AJAXs its content, style, and scripts.
JavaScript
7
star
21

ique

A queue that runs tasks when the browser is idle.
JavaScript
7
star
22

sublime

My current Sublime Text 3 settings.
6
star
23

next-thing

Frame, tick, and idle functions for the browser.
JavaScript
6
star
24

handmade

DIY build systems, tooling, and more.
JavaScript
6
star
25

selly

Convenient and optimized DOM element selection.
JavaScript
6
star
26

one-ready

A Promise wrapper for DOMContentLoaded that prevents event duplication.
JavaScript
5
star
27

understated

Render stateless components and JSX to real DOM.
JavaScript
5
star
28

outset-lib

A boilerplate for vanilla JavaScript libraries.
JavaScript
5
star
29

dotnot

Access object properties using dot notation.
JavaScript
5
star
30

array-intersect

Array intersection, simplified.
JavaScript
5
star
31

js-trending

GitHub's trending JavaScript repositories as a microservice.
JavaScript
4
star
32

hurry.js

An optimized curry function, for enabling full and partial function application.
JavaScript
3
star
33

outset-react

A boilerplate for React libraries, built with webpack.
JavaScript
3
star
34

reread

Recursively read paths to all files within a folder and its subfolders.
JavaScript
3
star
35

callmecavs.github.io

My personal website.
CSS
3
star
36

handmade-fs

File system tasks for handmade.
JavaScript
2
star
37

ama

You know the drill...
1
star
38

understated-cli

Create understated sites with no configuration.
JavaScript
1
star