A component to flip elements with a nice transition.


  • :zap: It is really small, JavaScript + CSS (min + gzip) is smaller than 1KB

  • :art: CSS uses Stylus + BEM + Autoprefixer

  • :package: There are ESM, CommonJS and UMD distributions

You can se by youself on Codepen or CodeSandbox.


This library is published in the NPM registry and can be installed using any compatible package manager.

npm install vue-flipper --save

# For Yarn, use the command below.
yarn add vue-flipper


Just import Flipper component from 'vue-flipper' and use it like any other Vue component.

    <div slot="front">Frontface</div>

    <div slot="back">Backface</div>

import Flipper from 'vue-flipper';

export default {
  components: { Flipper },
  data () {
    return {
      flipped: false
  methods: {
    onClick () {
      this.flipped = !this.flipped;

<style src="vue-flipper/dist/vue-flipper.css" />

Usage as global component

If you need <flipper /> available everywhere, you can register it as a global component.

And don't forget to import its CSS.

import 'vue-flipper/dist/vue-flipper.css';
import Vue from 'vue';
import Flipper from 'vue-flipper';

Vue.component('flipper', Flipper);

Usage from CDN

vue-flipper has an UMD bundle and CSS available through JSDelivr and Unpkg CDNs.

<link rel="stylesheet" href="" />

<script src=""></script>
<script src=""></script>

   * vue-flipper is available through VueFlipper.

   * Vue.use will add flipper as global component.
  Vue.component('flipper', VueFlipper);


Name Description Type Default
flipped If true flips to backface, otherwise to frontface. Boolean false
width Component's width. CSSLength (String) '100%'
height Component's height. CSSLength (String) '100%'
duration Component's transition duration. CSSTime (String) '0.5s'
transition Component's transition timing function. CSSTransitionFunction (String) 'ease-in'


Flipper component pass up every HTMLElement event. So, you can use @click, @mouseover etc.