A simple nice toggle button with Vue.js 2

A simple nice toggle button with Vue.js 2

vue-js-toggle-button Vue.js 2 toggle / switch button - simple, pretty, customizable. Feel free to ask questions or propose features in the "Issues" section. Live Demo http://vue-js-toggle-button.yev.io/ GitHub

Vue.js toggle/switch button.

Get a coffee

Live demo here


npm install vue-js-toggle-button --save


Import plugin:

import ToggleButton from 'vue-js-toggle-button'



Import component:

import { ToggleButton } from 'vue-js-toggle-button'

Vue.component('ToggleButton', ToggleButton)


<toggle-button @change="onChangeEventHandler"/>

<toggle-button v-model="myDataVariable"/>

<toggle-button :value="false"

<toggle-button :value="true"
               :labels="{checked: 'Foo', unchecked: 'Bar'}"/>


Name Type Default Description
value Boolean false Initial state of the toggle button
sync Boolean false If set to true, will be watching changes in value property and overwrite the current state of the button whenever value prop changes
speed Number 300 Transition time for the animation
disabled Boolean false Button does not react on mouse events
color [String, Object] #75C791 If String - color of the button when checked
If Object - colors for the button when checked/unchecked or disabled
Example: {checked: '#00FF00', unchecked: '#FF0000', disabled: '#CCCCCC'}
css-colors Boolean false If true - deactivates the setting of colors through inline styles in favor of using CSS styling
labels [Boolean, Object] false If Boolean - shows/hides default labels ("on" and "off")
If Object - sets custom labels for both states.
Example: {checked: 'Foo', unchecked: 'Bar'}
switch-color [String, Object] #BFCBD9 If String - color or background property of the switch when checked
If Object - colors or background property for the switch when checked/uncheked
Example: {checked: '#25EF02', unchecked: 'linear-gradient(red, yellow)'}
width Number 50 Width of the button
height Number 22 Height of the button
margin Number 3 Space between the switch and background border
name String undefined Name to attach to the generated input field
font-size Number undefined Font size


Name Description
change Triggered whenever state of the component changes.
value - state of the object
srcEvent - source click event
input Input event for v-model


Include plugin in your nuxt.config.js file:

module.exports = {
  plugins: ['~plugins/vue-js-toggle-button']

And your plugins/vue-js-toggle-button.js will look like:

import Vue from 'vue'
import Button from 'vue-js-toggle-button'


Browser compatibility

  • Chrome: 40+
  • Firefox: 25+
  • Safari: 10+
  • IE: 11+

Github Repository