2.0.0 • Public • Published

    Flipswitch.js - DEMO

    Pure ES6 library for clipping fixed positioned elements on scroll

    npm version GitHub last commit contributions welcome MIT license

    🔨️ Why start with why

    • allows to clip fixed elements trough sections on scroll
    • it's simple to use
    • lightweight (minified ~8kb)
    • fast and customizable
    • no dependencies

    📦 Getting Started

    • install flipswitch trough npm or pull ti from git
    npm i @bornfight/flipswitch
    • include flipswitch to your JS and SCSS after running npm install
    import Flipswitch from "@bornfight/flipswitch";
    @import "~flipswitch/src/scss/flipswitch.scss";
    or CSS
    <link rel="stylesheet" href="flipswitch.css">

    💎 Customization

    HTML markup
    • data-flipswitch-class doesn't need to be different for every section (could be something like dark and light)
    <p class="js-flipswitch-element">
        Flipswitch element
    <section class="js-flipswitch-section" data-flipswitch-class="first-section">
    <section class="js-flipswitch-section" data-flipswitch-class="second-section">
    <section class="js-flipswitch-section" data-flipswitch-class="fourth-section">
    <!-- default section -->
    <section class="js-flipswitch-section">
    Basic usage
    • element needs to have js-flipswitch-element class
    • section needs to have js-flipswitch-section class and data-flipswitch-class attribute
    • data-flipswitch-class is a flag that will define witch element will be clipped
    • library will use requestAnimationFrame() (not scroll event)
    • element will be wrapped and positioned to body
    new Flipswitch();
    Advanced usage
    • below example will use scroll event
    • element will be wrapped and positioned to js-parent
    • element is offset by 50px from left and -50px from top
    new Flipswitch({
        parentClass: 'js-parent',
        elementClass: 'js-element',
        sectionsClass: 'js-section',
        useScroll: true,
        offsetX: 50,
        offsetY: -50


    Option Type Default Example Description
    parentClass string element parent 'js-parent' Element will be wrapped and moved to that parent and not to initial parent element
    elementClass string 'js-flipswitch-element' 'js-element' Changes default class
    sectionsClass string 'js-flipswitch-section' 'js-section' Changes default class
    useScroll boolean false true Use scroll event and not requestAnimationFrame()
    offsetX number 0 50 Offsets element from top
    offsetY number 0 -50 Offsets element from left
    throttle number 0 10 Refreshes element position every XY milliseconds (only available if useScroll: false)
    data-flipswitch-class html attr data-flipswitch-class="red-section" flag that will define witch element will be clipped

    🚀 Useful to know

    1. every section needs to have data-flipswitch-class (look 4.) and section class (default is js-flipswitch-section)
    2. data-flipswitch-class is added to element wrapper as modifier class
    3. element needs to be position: fixed
    4. every second section doesn't need to have data-flipswitch-class - default class (and element clone) is available
    5. every element needs to have it's own Flipswitch instance (and different sections and element classes)
    6. throttle is only available if useScroll is false and value have to be in milliseconds
    7. first section on page needs to have class js-flipswitch-section but doesn't needs to have data-flipswitch-class attr


    npm i @bornfight/flipswitch

    DownloadsWeekly Downloads






    Unpacked Size

    58.1 kB

    Total Files


    Last publish


    • antonio.preucil
    • ilesar
    • maroje
    • degordian-dev
    • mario.loncarek
    • tjezidzic
    • shockwavee
    • jurajuki
    • ddrempe