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 / Learn more about Tick the engine that powers Flip
Buy me a Coffee / Dev updates on Twitter
If you just want to get on your way, copy the example
directory and use it as a starting point.
This example will automatically initialize 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:
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="https://github.com/pqina/flip/blob/master/flip/flip.min.css" rel="stylesheet">
Then copy the following snippet and place it just before the closing </body>
tag.
<script src="https://github.com/pqina/flip/raw/master/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.
You can also load the files from a CDN like unpkg using the links below:
<link href="https://unpkg.com/@pqina/flip/dist/flip.min.css" rel="stylesheet">
<script src="https://unpkg.com/@pqina/flip/dist/flip.min.js"></script>
npm i @pqina/flip --save
import Tick from '@pqina/flip';
console.log(Tick);
// logs {supported: true, options: {…}, helper: {…}, data: {…}, DOM: {…}, …}
Module usage example project on Stackblitz: https://stackblitz.com/edit/flip-counter-module
Information on how to customize Tick and use the Tick API can be found on the product website.
For better compatibility with screenreaders, we need to hide the flip view using aria-hidden
, this prevents the contents from being read out loud. 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>
MIT License, Enjoy!