🍥 Vue.js 2 toggle / switch button - simple, pretty, customizable
Switch branches/tags
Nothing to show
Clone or download


npm version npm
screen shot 2018-03-01 at 10 33 39

Vue.js 2 toggle / switch button - simple, pretty, customizable.


Feel free to ask questions or propose features in the "Issues" section

Live demo here


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

If using vue-cli, add the SASS loader:

npm install sass-loader node-sass --save-dev

Import Plugin:

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


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

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

<toggle-button :value="false"

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

If you prefer not to use the plugin you can also import the component directly:

import ToggleButton from 'vue-js-toggle-button/src/Button'


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'}
cssColors 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'}
switchColor [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, default is 50
height Number 22 Height of the button, default is 22
name String undefined Name to attach to the generated input field

labels object accepts HTML text (for example, you can use FontAwesome for checked/unchecked states).


Name Description
change Triggered whenever state of the component changes.
value - state of the object
srcEvent - source click event


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/dist/ssr.index'


Browser compatibility

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

Font size

To change font size please use basic css:

.vue-js-switch#changed-font {
  font-size: 16px;
<toggle-button id="changed-font"/>