1.0.2 • Published 7 years ago

jump.js v1.0.2

Weekly downloads
96,613
License
MIT
Repository
github
Last release
7 years ago

Jump.js

Jump.js on NPM

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. © 2016 Michael Cavalea

Built With Love

@nubisco/design-system@onekind/design-system@wide/modulus-scroll@hawezo/autoscroll.jsorbulo-vue-toursimple-scrolly-infi@everything-registry/sub-chunk-1994cloudents-tour@app4legalmasri/vuejs-tourinifohtmlacademy-backstopjshotel-saas-x@shoplo/tour-vuekangctkokk@tiagoroldao/react-scrollable-anchoraryafa-react-toolsapollo-uinc-lightapp-frontndla-article-scriptsndla-ui@bixiao/uingtourbackstopjsbackstopjs-dockerbackstopjs-playwrightbackstopjs-spectrumbackstopjs-testbackstop-byobbackstop-playwrightbackstop-raw@beanjs/docutemyyshop-awesomemyend-tourliyxt-testbuilt-image-pdfbluvue@codeurs/front@bigin/vue3-tour@tehsurfer/vue-tour@unimelb/pattern-lib-vuemakam-webui@wide/scrolllightbox-liblightbox-module@uxf/ui@vuelicious/vuetour@zalastax/nolb-jumanchor-hash-scrollplatform-workbenchreact-jumpcoodde-vue3-tour@dmed256/murky@daveobriencouk/react-scrollable-anchornuxt-tourqashot-comparedocutedocute-fadownstream_dgrebb_backstopjsdfeuk-frontenddfin-jkitdfeuk-frontend-manualreact-scrollable-anchorsecurity-encryptionsaber-theme-devfoliosaber-theme-portfoliosaikascroll-follow-tabsimple-react-smooth-scrollersimple-scrollspyxixi-corexixi-core-vuetifyym-vue-tour@egojump/docupyunion-vue-bluyizixu-awesomevue-bulma2vue-bluvue-blu-2vue-bulma-jumpvue-tourvue-tour-animatedvue-tour-forkvue-tutovue3-super-tourvue3-tourvue3-tour2trowel-coverstwa-vue-blu@fernando-msj/react-scrollable-anchorv-simple-guided-tourv3-tourvb-jumpeasy-react-scrollable-anchor@eli5/ui-kit@findify/bundle@findify/mjseszutils@globalhive/vuejs-tour@flourishsavings/flourish-vue-tour
1.0.2

7 years ago

1.0.1

8 years ago

1.0.0

8 years ago

0.4.0

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.1

8 years ago