Code Monkey home page Code Monkey logo

animated-scroll-to's Introduction

animated-scroll-to

npm version npm downloads

Animated JavaScript window and element scroll. Simple, plain JavaScript scrollTo function.

Demo

Demo is available on this page.

What is this?

This is a plain JavaScript animated scroll to function. It has easing, and accepts speed per 1000px rather than duration. Then function recalculates the duration, and sets the minimum of 250ms or maximum of 3000ms. If you give it offset which is larger from the maximum scroll value, it will use latter. Also it disables user scrolling while scroll animation is in progress. And also, you can give it HTML DOM Element to scroll to.

Script doesn't prevent multiple calls of it.

Installation

Get it from npm

npm install animated-scroll-to

import it in your app

import animateScrollTo from 'animated-scroll-to';

and call it when you need it

animateScrollTo(500);

or

animateScrollTo(document.querySelector('.my-element'));

You can also use the standalone build, by including animated-scroll-to.js in your page, but it is not recommended.

Options

// desiredOffset - page offset to scroll
// options - object with options

// default options
const options = {
  // duration of the scroll per 1000px, default 500
  speed: 500,

  // minimum duration of the scroll
  minDuration: 250,

  // maximum duration of the scroll
  maxDuration: 1500,

  // DOM element to scroll, default window
  // Pass a reference to a DOM object
  // Example: document.querySelector('#element-to-scroll'),
  element: window,

  // should animated scroll be canceled on user scroll/keypress
  // if set to "false" user input will be disabled until animated scroll is complete
  cancelOnUserAction: true,

  // function that will be executed when the scroll animation is finished
  onComplete: function() {}
};

const desiredOffset = 1000;

animateScrollTo(desiredOffset, options);

Why?

I wasn't able to find standalone, simple and working solution.

Browser support

Anything that supports requestAnimationFrame, meaning IE10+. For IE9 just provide a polyfill for it.

For IE8 and lower, you'll need to polyfill Object.keys and Array.forEach as well. Haven't tested this though.

It is missing <insert feature here>

I really tried to keep simple and lightweight. If you are missing something, feel free to add it and open a pull request.

animated-scroll-to's People

Contributors

adam187 avatar cyberhazard avatar fr8train avatar idready avatar stanko avatar thomasjonas avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.