npm.io
0.1.0 • Published 8 years ago

syzygy-window-scroller-js

Licence
ISC
Version
0.1.0
Deps
0
Vulns
0
Weekly
0

Window Scroller

Window Scroller is JS library that provides scrolling to specific element on anchor click functionality.

Installation

Npm: npm install syzygy-window-scroller-js

Yarn: yarn add syzygy-window-scroller-js

Examples

ES6 Import:

import {windowScroller} from 'syzygy-window-scroller-js';

Node require:

const windowScroller = require('syzygy-window-scroller-js');

Example without resolvers:

windowScroller({
    selector: '.window-scroller',           //selector by which elements are chosen
    anchorAttribute: 'data-scroll-to',      //anchor attribute of element
    scrollDuration: 1000,                   //duration of scroll animation (in ms)
    scrollPeriod: 20,                       //timeout between every scroll position update (in ms)
});

Custom resolvers example:

windowScroller({
    elementsResolver: () => {
        console.log('custom elements resolver');
        return Array.prototype.slice.call(document.querySelectorAll('[data-scroll-to="#main"],[data-scroll-to="#konkurs"]'));
    },

    elementAnchorResolver: (element) => {
        console.log('custom elementAnchor resolver');
        return element.getAttribute('data-scroll-to').substr(1);
    },

    elementByAnchorResolver: (element) => {
        console.log('custom element by anchor resolver');
        return document.getElementById(element);
    },

    elementPositionResolver: (element) => {
        console.log('custom element position resolver');
        const result = window.document.scrollingElement.scrollTop
            + element.getBoundingClientRect().top;

        if (result < 0) {
            return 0;
        }

        return result;
    },

    scrollPositionResolver: () => {
        console.log('(spentTime, startPoint, difference, duration');
        return 0;
    },
});

Parameters

Name Description Default behaviour
selector: string Selector by which anchor elements are chosen equals '.window-scroller'
anchorAttribute: string Anchor attribute of element equals data-scroll-to
duration: number Duration of scroll animation (in ms) equals 5000
period: number Timeout between every scroll position update (in ms) equals 20
elementsResolver: () => Elements[] Resolver of anchor elements (overrides selector) uses selector to find elements
elementAnchorResolver: (el: Element) => string Resolves given element anchor (overrides anchorAttribute) uses attribute to resolve anchor
elementByAnchorResolver: (anchor: string) => Element Resolves element by anchor Resolves element by id as given anchor
elementPositionResolver: (el: Element) => number Resolves position to scroll by element gets elements top position and subtracts offset
scrollPositionResolver: (spentTime: number, startPoint: number, difference: number, duration: number) => number Resolves position to scroll in specified time uses easeInOutQuad function