Switch
Bootstrap switch / Bootstrap toggle
Bootstrap switch / toggle is a simple component used for activating one of two predefined options. Commonly used as an on/off button.
It's mostly used in a number of various forms since they are dead simple to use and cut the time one needs to fill all the inputs.
Examples of Bootstrap switch use:
- Forms
- On/Off Functionality
- Preference choice
Default switch
Default styling for Bootstrap Switch component
<!-- Default switch -->
<label class="bs-switch">
<input type="checkbox">
<span class="slider round"></span>
</label>
Material switch MDB Pro component
Material Design styling for Bootstrap Switch component
<!-- Material switch -->
<div class="switch">
<label>
Off
<input type="checkbox">
<span class="lever"></span> On
</label>
</div>
Checked state
Add checked
attribute to the <input>
element to pre-select switch when the page loads.
The checked
attribute is a boolean attribute.
Default switch
<!-- Default checked -->
<label class="bs-switch">
<input type="checkbox" checked>
<span class="slider round"></span>
</label>
Material switch MDB Pro component
<!-- Material checked -->
<div class="switch">
<label>
Off
<input type="checkbox" checked>
<span class="lever"></span> On
</label>
</div>
Disabled state
Add the disabled
boolean attribute to the <input>
and the custom indicator and label description will be automatically styled and blocked.
A disabled <input>
element is unusable and un-clickable.
Default switch
<!-- Default disabled -->
<label class="bs-switch">
<input type="checkbox" disabled>
<span class="slider round"></span>
</label>
Material switch MDB Pro component
<!-- Material disabled -->
<div class="switch">
<label>
Off
<input type="checkbox" disabled>
<span class="lever"></span> On
</label>
</div>
Getting started : download & setup
Download
All the components and features are part of MDBootstrap package.
MDBootstrap (Material Design for Bootstrap) is a free (MIT Licensed) framework combining Material Design and the newest Bootstrap 4.
Click the button below to go to Download Page, where you can download MDBootstrap package.
MDBootstrap Download MDBootstrap AboutMDB Pro
Using components and features labeled as MDB Pro component requires MDB Pro package.
Click the button below to learn more about MDBbootstrap Pro package
MDBootstrap ProTutorials
If you need additional help to start, use our "5 min Quick Start" or "Full tutorial" resources.
5 min Quick Start Full TutorialCompilation
To reduce a weight of MDBootstrap package, you can compile your own, custom package containing only components and features you need.
Map of dependencies of SCSS files in MDBootstrap:
Legend:
'-->' means 'required'
All free and pro files require files from 'core' catalog
'none' means 'this component doesn't require anything except core files'
A file wrapped by `< >` means that this file make the base component prettier but it isn't necessary for the proper working
All PRO components require 'pro/_variables.scss' file
scss/
|
|-- core/
| |
| |-- bootstrap/
| | |-- _functions.scss
| | |-- _variables.scss
| |
| |-- _colors.scss
| |-- _global.scss
| |-- _helpers.scss
| |-- _masks.scss
| |-- _mixins.scss
| |-- _typography.scss
| |-- _variables.scss
| |-- _waves.scss
|
|-- free/
| |-- _animations-basic.scss --> none
| |-- _animations-extended.scss --> _animations-basic.scss
| |-- _buttons.scss --> none
| |-- _cards.scss --> none <_buttons.scss>
| |-- _dropdowns.scss --> none <_buttons.scss>
| |-- _input-group.scss --> _forms.scss, _buttons.scss, _dropdowns.scss
| |-- _navbars.scss --> none <_buttons.scss, _forms.scss, _input-group.scss>
| |-- _pagination.scss --> none
| |-- _badges.scss --> none
| |-- _modals.scss --> _buttons.scss, _forms.scss (PRO --> _tabs.scss)
| |-- _carousels.scss --> <_buttons.scss>
| |-- _forms.scss --> none
| |-- _msc.scss --> none <_buttons.scss, _forms.scss, _cards.scss>
| |-- _footers.scss none <_buttons.scss> (PRO: )
| |-- _list-group.scss --> none
| |-- _tables.scss --> none (PRO: _material-select.scss, pro/_forms.scss, _checkbox.scss, pro/_buttons.scss, pro/_cards.scss, _pagination.scss, pro/_msc.scss)
| |-- _depreciated.scss
|
|-- pro/
| |
| |-- picker/
| | |-- _default.scss --> none
| | |-- _default-time.scss --> _default.scss, free/_forms.scss, free/_buttons.scss, pro/_buttons.scss, free/_cards.scss
| | |-- _default-date.scss --> _default.scss, free/_forms.scss
| |
| |-- sections/
| | |-- _templates.scss --> _sidenav.scss
| | |-- _social.scss --> free/_cards.scss, free/ _forms.scss, free/_buttons.scss, pro/_buttons.scss,
| | |-- _team.scss --> free/_buttons.scss, pro/_buttons.scss, free/_cards.scss, pro/_cards.scss
| | |-- _testimonials.scss --> free/_carousels.scss, pro/_carousels.scss, free/_buttons.scss, pro/_buttons.scss
| | |-- _magazine.scss --> _badges.scss
| | |-- _pricing.scss --> free/_buttons.scss, pro/_buttons.scss
| | |-- _contacts.scss --> free/_forms.scss, pro/_forms.scss, free/_buttons.scss, pro/_buttons.scss
| |
| |-- _variables.scss
| |-- _buttons.scss --> free/_buttons.scss, pro/_msc.scss, _checkbox.scss, _radio.scss
| |-- _social-buttons.scss --> free/_buttons.scss, pro/_buttons.scss
| |-- _tabs.scss --> _cards.scss
| |-- _cards.scss --> free/_cards.scss <_buttons.scss, _social-buttons.scss>
| |-- _dropdowns.scss --> free/_dropdowns.scss, free/_buttons.scss
| |-- _navbars.scss --> free/_navbars.scss (PRO: )
| |-- _scrollspy.scss --> none
| |-- _lightbox.scss --> none
| |-- _chips.scss --> none
| |-- _msc.scss --> none
| |-- _forms.scss --> none
| |-- _radio.scss --> none
| |-- _checkbox.scss --> none
| |-- _material-select.scss --> none
| |-- _switch.scss --> none
| |-- _file-input.scss --> free/_forms.scss, free/_buttons.scss
| |-- _range.scss --> none
| |-- _input-group.scss --> free/_input-group.scss and the same what free input group, _checkbox.scss, _radio.scss
| |-- _autocomplete.scss --> free/_forms.scss
| |-- _accordion.scss --> pro/_animations.scss, free/_cards.scss
| |-- _parallax.scss --> none
| |-- _sidenav.scss --> free/_forms.scss, pro/_animations.scss, sections/_templates.scss
| |-- _ecommerce.scss --> free/_cards.scss, pro/_cards.scss, free/_buttons.scss, pro/_buttons.scss, pro/_msc.scss
| |-- _carousels.scss --> free/_carousels.scss, free/_cards.scss, free/_buttons.scss
| |-- _steppers.scss --> free/_buttons.scss
| |-- _blog.scss --> none
| |-- _toasts.scss --> free/_buttons.scss
| |-- _animations.scss --> none
| |-- _charts.scss --> none
| |-- _progress.scss --> none
| |-- _scrollbar.scss --> none
| |-- _skins.scss --> none
| |-- _depreciated.scss
|
`-- _custom-skin.scss
`-- _custom-styles.scss
`-- _custom-variables.scss
`-- mdb.scss
Map of dependencies of JavaScript modules in MDBootstrap:
Legend:
'-->' means 'required'
All files require jQuery and bootstrap.js
js/
├── dist/
│ ├── buttons.js
│ ├── cards.js
│ ├── character-counter.js
│ ├── chips.js
│ ├── collapsible.js --> vendor/velocity.js
│ ├── dropdown.js --> Popper.js, jquery.easing.js
│ ├── file-input.js
│ ├── forms-free.js
│ ├── material-select.js --> dropdown.js
│ ├── mdb-autocomplete.js
│ ├── preloading.js
│ ├── range-input.js --> vendor/velocity.js
│ ├── scrolling-navbar.js
│ ├── sidenav.js --> vendor/velocity.js, vendor/hammer.js, vendor/jquery.hammer.js
│ └── smooth-scroll.js
├── _intro-mdb-pro.js
├── modules.js
├── src/
│ ├── buttons.js
│ ├── cards.js
│ ├── character-counter.js
│ ├── chips.js
│ ├── collapsible.js --> vendor/velocity.js
│ ├── dropdown.js --> Popper.js, jquery.easing.js
│ ├── file-input.js
│ ├── forms-free.js
│ ├── material-select.js --> dropdown.js
│ ├── mdb-autocomplete.js
│ ├── preloading.js
│ ├── range-input.js --> vendor/velocity.js
│ ├── scrolling-navbar.js
│ ├── sidenav.js --> vendor/velocity.js, vendor/hammer.js, vendor/jquery.hammer.js
│ └── smooth-scroll.js
└── vendor/
├── addons/
│ ├── datatables.js
│ └── datatables.min.js
├── chart.js
├── enhanced-modals.js
├── hammer.js
├── jarallax.js
├── jarallax-video.js --> vendor/jarallax.js
├── jquery.easing.js
├── jquery.easypiechart.js
├── jquery.hammer.js --> vendor/hammer.js
├── jquery.sticky.js
├── lightbox.js
├── picker-date.js --> vendor/picker.js
├── picker.js
├── picker-time.js --> vendor/picker.js
├── scrollbar.js
├── scrolling-navbar.js
├── toastr.js
├── velocity.js
├── waves.js
└── wow.js
Compilation & Customization tutorial
If you need additional help to compile your custom package, use our Compilation & Customization tutorial
Compilation & Customization tutorialIntegrations with Angular, React or Vue
Apart from standard Bootstrap integration with jQuery, MDBootstrap provides integrations with Angular, React and Vue.
About MDB Angular About MDB React About MDB VueSwitch examples & customization
Switch colors variations MDB Pro component
Add one of the following classes:
primary-switch
secondary-switch
default-switch
info-switch
warning-switch
danger-switch
success-switch
blue-white-switch
teal-switch
pink-switch
amber-switch
blue-switch
indigo-switch
mdb-color-switch
<!-- Switch -->
<div class="switch primary-switch">
<label>
Off
<input type="checkbox" checked="checked">
<span class="lever"></span> On
</label>
</div>
.switch.primary-switch label input[type=checkbox]:checked + .lever {
background-color: #689DF6;
}
.switch.primary-switch label input[type=checkbox]:checked + .lever:after {
background-color: #4285F4;
}
.switch.default-switch label input[type=checkbox]:checked + .lever {
background-color: #4DCCBF;
}
.switch.default-switch label input[type=checkbox]:checked + .lever:after {
background-color: #2BBBAD;
}
.switch.secondary-switch label input[type=checkbox]:checked + .lever {
background-color: #C791E2;
}
.switch.secondary-switch label input[type=checkbox]:checked + .lever:after {
background-color: #a6c;
}
.switch.success-switch label input[type=checkbox]:checked + .lever {
background-color: #2ACC6C;
}
.switch.success-switch label input[type=checkbox]:checked + .lever:after {
background-color: #00C851;
}
.switch.info-switch label input[type=checkbox]:checked + .lever {
background-color: #59C3EB;
}
.switch.info-switch label input[type=checkbox]:checked + .lever:after {
background-color: #33b5e5;
}
.switch.warning-switch label input[type=checkbox]:checked + .lever {
background-color: #FFA339;
}
.switch.warning-switch label input[type=checkbox]:checked + .lever:after {
background-color: #F80;
}
.switch.danger-switch label input[type=checkbox]:checked + .lever {
background-color: #FF606F;
}
.switch.danger-switch label input[type=checkbox]:checked + .lever:after {
background-color: #ff3547;
}
.switch.teal-switch label input[type=checkbox]:checked + .lever {
background-color: #b2dfdb;
}
.switch.teal-switch label input[type=checkbox]:checked + .lever:after {
background-color: #80cbc4;
}
.switch.pink-switch label input[type=checkbox]:checked + .lever {
background-color: #f8bbd0;
}
.switch.pink-switch label input[type=checkbox]:checked + .lever:after {
background-color: #f48fb1;
}
.switch.blue-switch label input[type=checkbox]:checked + .lever {
background-color: #b3e5fc;
}
.switch.blue-switch label input[type=checkbox]:checked + .lever:after {
background-color: #81d4fa;
}
.switch.amber-switch label input[type=checkbox]:checked + .lever {
background-color: #ffe082;
}
.switch.amber-switch label input[type=checkbox]:checked + .lever:after {
background-color: #ffd54f;
}
.switch.mdb-color-switch label input[type=checkbox]:checked + .lever {
background-color: #618FB5;
}
.switch.mdb-color-switch label input[type=checkbox]:checked + .lever:after {
background-color: #3F729B;
}
.switch.indigo-switch label input[type=checkbox]:checked + .lever {
background-color: #9fa8da;
}
.switch.indigo-switch label input[type=checkbox]:checked + .lever:after {
background-color: #7986cb;
}
.switch.blue-white-switch label input[type=checkbox]:checked + .lever {
background-color: #2196f3;
}
.switch.blue-white-switch label input[type=checkbox]:checked + .lever:after {
background-color: #fff;
}
.switch.blue-white-switch label .lever {
background-color: #ccc;
}
.switch.blue-white-switch label .lever:after {
background-color: #fff;
}
Switch shapes variations
Switch without labels
<!-- Switch -->
<div class="switch square blue-white-switch">
<label>
Off
<input type="checkbox" checked="checked">
<span class="lever"></span> On
</label>
</div>
<!-- Switch -->
<div class="switch round blue-white-switch">
<label>
Off
<input type="checkbox" checked="checked">
<span class="lever"></span> On
</label>
</div>
.switch.round label .lever {
width: 54px;
height: 34px;
border-radius: 10em;
}
.switch.round label .lever:after {
width: 26px;
height: 26px;
border-radius: 50%;
left: 4px;
top: 4px;
}
.switch.square label .lever {
width: 54px;
height: 34px;
border-radius: 0px;
}
.switch.square label .lever:after {
width: 26px;
height: 26px;
border-radius: 0px;
left: 4px;
top: 4px;
}
Switch within form
<div class="card">
<div class="card-body">
<!-- Form register -->
<form>
<p class="h3 text-center my-4 blue-text">Sign up</p>
<div class="md-form">
<i class="fa fa-user prefix grey-text"></i>
<input type="text" id="switchForm-name2" class="form-control">
<label for="switchForm-name2">Your name</label>
</div>
<div class="md-form">
<i class="fa fa-envelope prefix grey-text"></i>
<input type="text" id="switchForm-email2" class="form-control">
<label for="switchForm-email2">Your email</label>
</div>
<div class="md-form">
<i class="fa fa-lock prefix grey-text"></i>
<input type="password" id="switchForm-pass2" class="form-control">
<label for="switchForm-pass2">Your password</label>
</div>
<div class="col-md-12 text-center">
<p class="font-small text-muted">Would you like to receive our newsletter?</p>
<!-- Switch -->
<div class="switch primary-switch text-muted font-small">
<label>
No
<input type="checkbox" checked="checked">
<span class="lever"></span>
Yes
</label>
</div>
</div>
<div class="text-center my-3">
<button class="btn btn-primary btn-rounded">Sign up</button>
</div>
</form>
<!-- Form register -->
</div>
</div>
Switch within modal
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-rounded" data-toggle="modal" data-target="#basicExample1">
Launch modal with switch
</button>
<!-- Modal -->
<div class="modal fade" id="basicExample1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1" aria-hidden="true">
<div class="modal-dialog" role="document">
<!-- Content -->
<div class="modal-content">
<!-- Header -->
<div class="modal-header text-center">
<h4 class="modal-title w-100 font-weight-bold blue-text h3" id="myModalLabel1">Subscription</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<!-- Body -->
<div class="modal-body mx-4">
<form name="form11" id="form11" method="post">
<div class="md-form">
<i class="fa fa-user prefix grey-text"></i>
<input type="text" id="switchForm-name22" class="form-control">
<label for="switchForm-name22">Your name</label>
</div>
<div class="md-form">
<i class="fa fa-envelope prefix grey-text"></i>
<input type="email" id="switchForm-email22" class="form-control">
<label for="switchForm-email22">Your email</label>
</div>
<div class="d-flex justify-content-start pt-3">
<p class="mr-4 mt-1">Notification 1</p>
<!-- Switch -->
<div class="switch round primary-switch text-muted font-small">
<label>
Off
<input type="checkbox">
<span class="lever"></span>
On
</label>
</div>
</div>
<div class="d-flex justify-content-start pb-3">
<p class="mr-4 mt-1">Notification 2</p>
<!-- Switch -->
<div class="switch round primary-switch text-muted font-small">
<label>
Off
<input type="checkbox">
<span class="lever"></span>
On
</label>
</div>
</div>
</form>
</div>
<!-- Footer -->
<div class="modal-footer">
<button type="button" id="resetBtn" value="Reset" class="btn btn-elegant btn-block">Reset</button>
</div>
</div>
<!-- Content -->
</div>
</div>
function Reset() {
document.getElementById("form1").reset();
}
// Please do not use inline event handlers, use this instead:
document.getElementById("resetBtn").onclick = function () {
Reset();
}