Giter Club home page Giter Club logo

when-scroll's Introduction

when-scroll Build Status

when-scroll is a library which will fire a callback after certain scroll patterns—such as scrolling below 1000px, or arriving at an element.

whenScroll(scrollPattern, callback, [ initialCheck=false ] );

The scrollPattern could be a string like one of these:

  • below 1000px
  • above 200px (not usually useful unless added later)
  • every 100px

Or it can be a string like one of these:

  • every 100px below 100px
  • every 200px below 400px and above 1000px (the "and" will be removed)

Or it can be an array, containing an element:

  • ['within 100px of', el] (again, "of" will be removed)

The optional third argument (which defaults to false) will check immediately (or as soon as the page is ready) whether the scroll pattern is true, instead of waiting for the user to scroll. This is good for something like a lazy loading library where stuff could be on screen initially.

Examples

The following code will log "We're here!" to the console when the user scrolls below 1000px:

whenScroll('below 1000px', function () {
	console.log('We\'re here!');
});

The following will log "You've scrolled 200px" every time the user scrolls another 200px, but only between 500px and 1000px:

whenScroll('every 200px below 500px and above 1000px', function () {
	console.log('You\'ve scrolled 200px');
});

The following will call lazyLoad() when the image is 200px off the bottom of the screen, so about to appear:

var img = document.querySelector('.foo');
whenScroll(['within 100px of', img], function () {
	lazyLoad(img);
});

The following will execute straight away without the user having to scroll!

whenScroll('above 1000px', function () {
	console.log('You haven\'t even scrolled yet');
}, true);

Installation

Take the files from the dist directory, or install through npm:

$ npm install --save when-scroll

License

Released under the MIT license.

when-scroll's People

Contributors

callumacrae avatar djgrant avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

when-scroll's Issues

Should check position against element top, not element bottom

Doesn't make much sense to check against the bottom of the element. 50px away from a 100px element won't happen until the element should have appeared 50px ago. Works for lazy loading, doesn't work with anything else!

Probably a breaking change.

Calling whenScroll() after DOMContentLoaded

whenScroll('above 1000px', function () {
    console.log('You haven\'t even scrolled yet');
}, true);

If you run this after DOMContentLoaded, is the expected behaviour for the scroll handler to be called?

I'm doing this in a react component where the component may re-mount after the DOM has loaded.

Happy to create a PR if you agree that the scroll handler should be called as long as the DOM is loaded rather than when the DOM has loaded.

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.