2.0.0 ā€¢ Published 2 years ago

scroll-snooper v2.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Scroll Snooper Netlify Status

release minified license jsdelivr CodePen

šŸ›¼ Pure JavaScript API that goes snooping around elements while scrolling

Getting started

NPM package

npm i scroll-snooper

or as a dev dependency

npm i scroll-snooper --save-dev

Import

import "scroll-snooper";

// your script

CDN

šŸ‘‰ CDN Hosted - jsDelivr

šŸ‘‰ Self hosted - Download the latest release

Quick use

Create watcher to listen to events

ScrollSnooper.create({
    trigger: document.querySelect('.block'),
    onEnter: data => {
        console.log(data);
    },
    onLeave: data => {
        console.log(data);
    },
    onScroll: data => {
        console.log(data);
    },
});

Is in viewport

console.log(ScrollSnooper.isInViewport(document.querySelect('.block')));

or only return true if at least 20% of element is appearing in viewport

console.log(ScrollSnooper.isInViewport(document.querySelect('.block'), 0.2));

Visibility

Get the number of pixels and proportion (%) of the element displaying on the viewport.

console.log(ScrollSnooper.visibility(document.querySelect('.block')));

The most visible element

Select multiple elements and pick out the most visible one based on its pixel displaying on the viewport.

console.log(ScrollSnooper.getTheMostVisible(document.querySelectAll('.blocks')));

or use with create()

ScrollSnooper.create({
    trigger: document.querySelectAll('.blocks'),
    isGetTheMostVisible: true,
    onChange: data => {
        console.log(data);
    },
    onFound: data => {
        console.log(data);
    },
});

Documentation

ScrollSnooper.create({}) : void

NameTypeDefaultNote
triggerjQuery, HTMLElementundefinedElement(s).
startstringtop bottomStarting position, top bottom means _"when the top of the trigger hits the bottom

of the viewport", "center center" means "when the center of the trigger hits the center of the viewport"_. "top 90%" or "bottom 100px" are also accepted. | | end | string | bottom top | Ending position. | | onEnter | function | data => {} | A callback for when the trigger is scrolled into view. | | onLeave | function | data => {} | A callback for when the trigger is scrolled out of view. | | onScroll | function | data => {} | A callback that gets called everytime the scroll position changed (scrolling, resizing). |

When isGetTheMostVisible is true

NameTypeDefaultNote
isGetTheMostVisiblebooleanfalseActivate the watcher for multiple triggers.
onChangefunctiondata => {}A callback that gets called everytime the most visible element changed (including undefined).
onFoundfunctiondata => {}A callback that gets called everytime one of the triggers is scrolled into view.

ScrollSnooper.isInViewport( element: jQuery | HTML element, proportion: number) : Boolean

Returns true if the element is in the viewport. You can optionally specify a minimum proportion, like ScrollSnooper.isInViewport(element, 0.2) would only return true if at least 20% of the element is in the viewport.

console.log(ScrollSnooper.isInViewport(document.querySelect('.block'), 0.2));

ScrollSnooper.visibility( element: jQuery | HTML element ) : {pixel, proportion}

Get the number of pixels and proportion (%) of the element displaying on the viewport.

console.log(ScrollSnooper.visibility(document.querySelect('.block')));

ScrollSnooper.getTheMostVisible( element: jQuery | HTML element, atLeastPixel: number ) : Object

Select multiple elements and pick out the most visible one based on its pixel displaying on the viewport.

console.log(ScrollSnooper.getTheMostVisible(document.querySelectAll('.blocks')));

Deployment

Start dev server

npm run dev

Build production files (UMD and NPM package)

npm run prod

Build sources from ./web to ./build

npm run build

Build files from ./src to ./dist then publish to npm

npm run publish

License

MIT License

Copyright (c) 2022 Minh-Phuc Bui