Flip
Flip is the most advanced Flip counter plugin available on the web. It's super easy to setup, amazingly flexible and beautifully animated.
Whether you want to count down to an event, visualize a fund raising campaign, show a clock or a sale counter, Flip has got your use case covered.
Flip counter in a nutshell
- Works Standalone, no Dependencies
- Super Fast and Beautifully Animated
- Responsive and Mobile Friendly
- Works on all Major Browsers
- JavaScript and jQuery API
- Fits any Language, Locale or Timezone
Presets
Use one of the presets below as a starting point. The visual style of each preset can be easily customized with CSS.
-
Countdown
-
Event Countdown
Count down to important events, like weddings or a product launch or new years eve. When done, show a message, redirect to another page, or run custom logic.
Event Countdown Demo -
Timed Countdown
Create a feeling of urgency with this session based counter. Count down the seconds a user has been on a page. Or give the user a fixed amount after his first visit.
Timed Countdown Demo -
Recurring Event
Schedule countdowns to recurring events. Set yearly, monthly, weekly or daily moments. Pause for fixed amount of time during event before continuing countdown.
Recurring Event Demo -
Historic Counter
Count time since historic or recent events. Time since first moon landing, server up time, elapsed time since webpage was opened.
Historic Counter Demo
-
-
Counter
-
Fund Raising Campaign
Visualise donated funds. Live update by periodically fetching current donated amount using AJAX.
Fund Raising Campaign Demo -
Value Counter
Increase a number by a certain value over a fixed amount of iterations. Ideal for simulated values and guesstimates.
Value Counter Demo -
Slow Reveal
Reveal numbers in a tension increasing fashion. Rotate random values before showing that winning lottery number.
Slow Reveal Demo -
Animated Values
Improve presentation of values. Animated from zero to given value over a set amount of time. Also useful for progress meters.
Animated Values Demo
-
-
Other
Advanced features
-
QuickFlip
High performance flip animations, flip cards can overlap. Values can be updated multiple times each second.
-
TimeSnap
Timer algorithm automatically corrects for JavaScripts setInterval time drift, resulting in high precision interval accuracy.
-
ServerSync
Automatically syncs the client and server time without additional configuration requirements.
-
TickEngine
The Tick engine behind Flip supports rich counter template building and transform composition.
Feature overview
-
Flip panel modes
Different presentation modes, a separate flipper for each character or one giant flip panel. Slow or fast paced animations, realistic or futuristic animation effects, it’s all possible.
-
Pick from 24 different easing modes.
-
Control flip animation duration to the millisecond.
-
-
Layout engine
Flexbox based layout builder
-
Quickly build custom counter layouts
-
Horizontal, vertical and overlay positioning
-
Align center, left, right, top, bottom or fill
-
-
Browsers
Tested and approved on the following browsers. If not supported, Tick does not load and shows the HTML fallback content following Progressive Enhancement principles.
-
Chrome
-
Firefox
-
Edge
-
Opera
-
Safari 9+
-
iOS Safari 9+
-
Android 5+
-
Internet Explorer 11+
-
-
Modern and Flexible CSS Setup
Flip is responsive and mobile friendly. CSS is setup for easy customization. Flip counters can be styled with basic CSS properties.
-
Control corner styles of flipper
-
Tune shadows of flipper
-
Alter Font family, color, background-color and shadows
-
Add your own styles, Flip is based on HTML so everything can be styled
-
-
Transform Engine
Value transform egine, link transforms to build complex counters without writing any code.
-
Interpolate from one value to the other
-
Advanced transform nesting for complex transforms
-
Pluralize labels based on input value
-
A total of 34 transform functions
-
Add your own transform functions or create custom presets
-
-
MIT License
Free to use for everyone, enjoy!
Let's build!
Building Flip counters is very similar to building with Legos. Let’s spend a couple minutes building a Flip counter together.
-
We start with the
tick
base block.<div class="tick"></div>
-
As we haven't yet entered a value Tick does not really do anything.
Let's set a value by adding a
data-value
attribute to the base block.<div class="tick" data-value="Hello World"></div>
-
Our counter is now presented with a plain "text" view.
We can also present strings instead of numbers.
<div class="tick" data-value="1808"></div>
-
While useful, this is not a flip counter by any means, and it's certainly not very spectacular.
Let's turn this counter into a flip counter.
We tell the Tick engine to render a different view by adding an HTML element that has a
data-view
attribute with its value set to "flip".<div class="tick" data-value="Hello World"> <span data-view="flip"></span> </div>
-
Alright, that's a lot better!
Let's switch back to a numeric value but this time we'll have it split up into separate flip panels.
<div class="tick" data-value="1234"> <div data-repeat="true"> <span data-view="flip"></span> </div> </div>
-
While Tick is great for static counters, it really shines for counters that are regularly updated.
Let's update our counter each second. We'll do that by binding a function to the
data-did-init
callback.<div class="tick" data-value="1234" data-did-init="setupFlip"> <div data-repeat="true"> <span data-view="flip"></span> </div> </div> <script> function setupFlip(tick) { // The Tick `interval` function // helps to quickly setup a timer Tick.helper.interval(function() { // For this demo we increase // the value of our ticker // each second tick.value++; }, 1000); } </script>
-
Our counter is now "visually" done, one step remains, and that's making sure the information in your counter is also accessible.
We'll add an
aria-hidden
attribute to hide the content of the counter.Then we'll add an
aria-label
attribute that will contain the replacement content.<div class="tick" data-value="1234" data-did-init="setupFlip"> <!-- The aria-hidden attribute below hides the tick content from screenreaders --> <div data-repeat="true" aria-hidden="true"> <span data-view="flip"></span> </div> </div> <script> function setupFlip(tick) { Tick.helper.interval(function() { tick.value++; // The aria-label attribute is // used instead of the actual // tick content tick.root.setAttribute( 'aria-label', tick.value ); }, 1000); } </script>