npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

scroll-captain

v1.1.9

Published

Scroll Captain is a JS library for creating scroll-triggered animations.

Downloads

168

Readme

Scroll Captain

ScrollCaptain is a JS library that simplifies the creation of interactive scroll effects. It enables the definition of a trigger element whose visibility is monitored within a predefined animation area. As soon as this element enters, leaves or passes through the area, various provided actions such as CSS animations or class assignments can be triggered.

Click here and let Scroll Captain introduce himself.


Getting started

Here is an example of how to setup Scroll Captain.

Javascript

import { ScrollCaptain } from 'scroll-captain';

// Get the root element of the animation
const $scrollCaptain = document.querySelector('[data-scrollcaptain="root"]');

// Define a new Scroll Captain instance
if ($scrollCaptain) {
    const animation = new ScrollCaptain($scrollCaptain, {
        // Basic options
        initAttr: 'data-scrollcaptain',
        top: '-100px',
        bottom: '20%',
        triggerPosition: 0.5,
        
        // Animation options
        animateText: {
            targetSuffix: 'text',
            easing: 'ease-out',
            duration: 0.5,
            onscroll: true,
            translateY: { 0: -100, 100: 0 }
        }
    });
}

HTML

Assign the data attributes to your HTML elements.

If the root element should act as the trigger:
<section data-scrollcaptain="root">
    <p data-scrollcaptain="target">I will be animated.</p>
</section>
If an element within the root element should act as the trigger:

Enter a name in the triggerSuffix option, e.g. 'trigger' and assign the data attribute with the suffix to the desired element.

<section data-scrollcaptain="root">
    <div data-scrollcaptain="trigger">
        <p data-scrollcaptain="target">I will be animated.</p>
    </div>
</section>

Instance options

Basic options

| Option | Type | Default value | Description | | ----------------------- | ---------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | initAttr | string | data-scrollcaptain | Identifying data attribute. | | triggerSuffix | string | null | Suffix for defining a trigger element within the passed root element. | | triggerIndex | number | -1 | Current instance index among several instances (only necessary for animation of global elements to identify the trigger priority). | | triggerPosition | number | 0 | Value between 0 and 1 that specifies how much of the trigger must be in the animation area to trigger the animation.Examples:0: As soon as a part is visible, 0.8: at least 80%, 1: Full element | | top | string | null | Defines the upper limit of the animation area. The value describes the distance to the upper viewport border and can be specified in px or %.null: Upper viewport border, '200px': 200px below the upper viewport border, '-40%': 40% above the upper viewport border | | bottom | string | null | Defines the lower limit of the animation area. The value describes the distance to the lower viewport border and can be specified in px or %. For more information see the section top | | cssSpace | string | null | Name for a CSS variable that is passed to the root element and contains the height of the animation area as a value. | | onInit | function | null | A callback function that is called when the instance is initialised (the animation progress is passed as a parameter). | | onEnter | function | null | A callback function that is called when the trigger enters the animation area (the animation progress is passed as a parameter). | | onLeave | function | null | A callback function that is called when the trigger leaves the animation area (the animation progress is passed as a parameter). | | onScroll | function | null | A callback function that is called for each scroll event when the trigger scrolls through the animation area (the animation progress is passed as a parameter). | | onResize | function | null | A callback function that is called when the size of the browser window is changed (the animation progress is passed as a parameter). | | updateOnResize | function | null | A callback function that is called when the size of the browser window is changed. Useful for adjusting options that affect the animation area before the change. | | devMode | boolean | false | Logs information about the animation settings to the console. | | breakpoints | object | null | An object with settings for different screen sizes. Breakpoints function as minimum values for the screen width. | | animate + CustomKey | object | | See section Animation options. |

Animation options

Several animations can be defined per instance. This means that one and the same trigger can initiate different actions. All you need to do is create a key containing the word "animate" in the options. It is then recognised as a new animation object and receives standard options that can be overwritten as required. The following options can be used:

| Option | Type | Default value | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | targetSuffix | string | target | Suffix for defining the target elements on which the animation is to be triggered. | | globalTarget | boolean | false | Defines whether the target elements are to be searched for in the root element or in the entire DOM. | | sticky | boolean | false | Sets the target elements sticky along the entire animation area. | | class | string | null | A class that is added to the target elements when the animation is active and removed when it is inactive. | | onscroll | boolean | false | Specifies the animation type. If activated, animations are triggered synchronously with the user's scrolling behaviour. If deactivated, animations are triggered in one go via keyframe animation. | | resetOnScrollDown | boolean | true | If activated, keyframe animations are reset and classes are removed as soon as the animation area is exited when scrolling down. Otherwise they remain unchanged. | | resetOnScrollUp | boolean | true | If activated, CSS animations are reset and classes are removed as soon as the animation area is exited when scrolling upwards. Otherwise they remain unchanged. | improvePerformance | boolean | true | By default, the element is assigned the will-change property to improve performance. If this is not desired, it can be deactivated. | | easing | string | linear | Determines the speed of a transition. All values permitted for the CSS property Easing can be used. | | duration | number or object of type { time: number, multiplier: number } | 0.2 | Defines the transition duration. If there are several elements, the duration can be multiplied for each additional element. | | delay | number or object of type { time: number, multiplier: number } | null | Defines the transition delay. If there are several elements, the delay can be multiplied for each additional element. | | opacity | number or object with animation sections, e.g. { 0: number, 50: number, 100: number } | null | If a number is defined, the animation is animated from the initial state of the element to this value.If an object with animation sections is defined, the animation is animated according to the current animation progress between the specified values. | | backgroundColor,color,borderColor,borderTopColor,borderRightColor,borderBottomColor,borderLeftColor,fill,stroke | string or object with animation sections, e.g. { 0: string, 50: string, 100: string } | null | Defines a new colour value for the corresponding CSS property.If a string is defined with a colour value, the original colour value of the element is animated to this value.If an object is defined with animation sections, the animation is animated according to the current animation progress between the specified colour values.The colour string may look as follows: 'rgb(r,g,b)', 'rgba(r,g,b,a)', '#rgb', '#rgba','#rrggbb' or '#rrggbbaa'. | | translateX,translateY,translateZ,perspective,rotate,rotateX,rotateY,rotateZ,scale,scaleX,scaleY,scaleZ,skewX,skewY | number or object with animation sections, e.g. { 0: number, 50: number, 100: number } | null | Defines a new value for the corresponding Transform property.If an object is defined with animation sections, the animation is animated according to the current animation progress between the specified values. |


Methods

Update

The update method can be used to perform an update after changes have been made to the options.

const animation = new ScrollCaptain($scrollCaptain, {
    top: '20px'
    // Other options ...
});

animation.defaultOptions.top = '50px';
animation.update();

Customisable options

These options can be changed using breakpoints or the update method:

Instance options

top, bottom, triggerPosition, cssSpace

Animation options

sticky, easing, duration, delay, opacity, backgroundColor, color, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, fill, stroke, translateX, translateY, translateZ, perspective, rotate, rotateX, rotateY, rotateZ, scale, scaleX, scaleY, scaleZ, skewX, skewY