@pqina/flip

A Beautifully Animated Flip Clock

Usage no npm install needed!

<script type="module">
  import pqinaFlip from 'https://cdn.skypack.dev/@pqina/flip';
</script>

README

Flip Countdown

Flip is an advanced and beautiful flip counter plugin. Easy to use and highly flexible, you can set up a custom counter on your website in minutes. Display visitor counts, countdown to a special date or celebrate progress. Whatever you’re planning, the options are endless.

Learn more about Flip on the product site

Learn more about Tick the engine that powers Flip

Made with ❤ By Rik Schennink

Quick Start

If you just want to get on your way, copy the example directory and use it a starting point.

This example will automatically initialise Flip counters on the website and can be used with the presets on the demo site.

Or you can use one of the javascript framework codesandboxes below:

Setup

For the code snippets below we'll assume it's the flip.min.css and flip.min.js version and the folder we are uploading to is named flip.

Copy the following HTML snippet in the <head> of your web page.

<link href="/flip/flip.min.css" rel="stylesheet">

Then copy the following snippet and place it just before the closing </body> tag.

<script src="/flip/flip.min.js"></script>

Make sure the paths in the above code snippets match the location of the CSS and JS files.

You can now copy past the presets to your website and everything should function correctly.

Install from NPM

npm i @pqina/flip --save
import Tick from '@pqina/flip';

console.log(Tick);
// logs {supported: true, options: {…}, helper: {…}, data: {…}, DOM: {…}, …}

Docs

Information on how to customize Tick and use the Tick API can be found on the product website.

Accessibility

For better compatibility with screenreaders we need to hide the flip view using aria-hidden, this prevents the contents from being read out load. We can then use an aria-label attribute to provide a formatted label instead.

<div class="tick"
     data-value="1234"
     data-did-init="setupFlip">
  
    <!-- Hide visual content from screenreaders with `aria-hidden` -->
    <div data-repeat="true" aria-hidden="true">
        <span data-view="flip"></span>
    </div>
  
</div>

<script>
function setupFlip(tick) {

    Tick.helper.interval(function() {

        tick.value++;

        // Set `aria-label` attribute which screenreaders will read instead of HTML content
        tick.root.setAttribute('aria-label', tick.value);

    }, 1000);

}
</script>

License

MIT License, Enjoy!