Switches

Materialize provides custom switches. A switch has the markup of a custom checkbox but uses the .switch class to render a toggle switch.


Switches Type

Default

The default switch has a solid background style and it comes with two different shapes Round & Square. Use .switch for default round switches. Use .switch.switch-square for default square switch.

Default
Square
<div class="row row-bordered g-0">
                  <div class="col-sm-6 p-6">
                    <div class="text-light small fw-medium mb-4">Default</div>
                    <label class="switch">
                      <input type="checkbox" class="switch-input" />
                      <span class="switch-toggle-slider">
                        <span class="switch-on"></span>
                        <span class="switch-off"></span>
                      </span>
                      <span class="switch-label">Default</span>
                    </label>
                  </div>
                  <div class="col-sm-6 p-6">
                    <div class="text-light small fw-medium mb-4">Square</div>
                    <label class="switch switch-square">
                      <input type="checkbox" class="switch-input" />
                      <span class="switch-toggle-slider">
                        <span class="switch-on"></span>
                        <span class="switch-off"></span>
                      </span>
                      <span class="switch-label">Square</span>
                    </label>
                  </div>
                </div>

Variations

Materialize includes several predefined variations of switches.

Default

<!-- Primary -->
                <label class="switch switch-primary">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Primary</span>
                </label>
                
                <!-- Secondary -->
                <label class="switch switch-secondary">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Secondary</span>
                </label>
                
                <!-- Success -->
                <label class="switch switch-success">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Success</span>
                </label>
                
                <!-- Danger -->
                <label class="switch switch-danger">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Danger</span>
                </label>
                
                <!-- Warning -->
                <label class="switch switch-warning">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Warning</span>
                </label>
                
                <!-- Info -->
                <label class="switch switch-info">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Info</span>
                </label>
                
                <!-- Dark -->
                <label class="switch switch-dark">
                  <input type="checkbox" class="switch-input" checked />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Dark</span>
                </label>
Class Value
class="switch switch-{value}" primary | secondary | success | danger | warning | info | light | dark

Size

Fancy larger or smaller switches? Add .switch-lg or .switch-sm for additional sizes.

Default


Square


<div class="row">
                  <div class="col-sm-6 p-6">
                    <div class="text-light small fw-medium">Default</div>
                    <div class="demo-vertical-spacing">
                      <label class="switch switch-sm">
                        <input type="checkbox" class="switch-input" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Small</span>
                      </label>
                
                      <br />
                
                      <label class="switch">
                        <input type="checkbox" class="switch-input" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Default</span>
                      </label>
                
                      <br />
                
                      <label class="switch switch-lg">
                        <input type="checkbox" class="switch-input" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Large</span>
                      </label>
                    </div>
                  </div>
                  <div class="col-sm-6 p-6">
                    <div class="text-light small fw-medium">Square</div>
                    <div class="demo-vertical-spacing">
                      <label class="switch switch-square switch-sm">
                        <input type="checkbox" class="switch-input" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Small</span>
                      </label>
                
                      <br />
                
                      <label class="switch switch-square">
                        <input type="checkbox" class="switch-input" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Default</span>
                      </label>
                
                      <br />
                
                      <label class="switch switch-square switch-lg">
                        <input type="checkbox" class="switch-input" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Large</span>
                      </label>
                    </div>
                  </div>
                </div>

States

Disabled

Make switches look inactive by adding the disabled boolean attribute to the <input> inside .switch.


<label class="switch mb-4">
                  <input type="checkbox" class="switch-input" disabled />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Default - OFF</span>
                </label>
                
                <br />
                
                <label class="switch">
                  <input type="checkbox" class="switch-input" checked disabled />
                  <span class="switch-toggle-slider">
                    <span class="switch-on"></span>
                    <span class="switch-off"></span>
                  </span>
                  <span class="switch-label">Default - ON</span>
                </label>

Validation

Add validations states to switches by adding bootstrap .is-valid or .is-invalid class. Custom switch also support jQuery Validation states.

<div class="mb-3">
                  <label class="switch">
                    <input type="checkbox" class="switch-input is-valid" checked />
                    <span class="switch-toggle-slider">
                      <span class="switch-on"></span>
                      <span class="switch-off"></span>
                    </span>
                    <span class="switch-label">Valid</span>
                  </label>
                </div>
                
                <div class="has-error">
                  <label class="switch">
                    <input type="checkbox" class="switch-input is-invalid" checked />
                    <span class="switch-toggle-slider">
                      <span class="switch-on"></span>
                      <span class="switch-off"></span>
                    </span>
                    <span class="switch-label">Invalid</span>
                  </label>
                </div>

Stacked Radio

Wrap switches with .switches-stacked class for stacked/multiple switches options.

Radio (switch) are normally presented in radio switch groups. Only one switch in a group can be selected at a time. Use same name attribute with all the <input>s in .switch for a single group.

Default
Square
<div class="row row-bordered g-0">
                  <div class="col-sm-6 p-6">
                    <div class="text-light small fw-medium mb-4">Default</div>
                    <div class="switches-stacked">
                      <label class="switch">
                        <input type="radio" class="switch-input" name="switches-stacked-radio" checked />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Option 1</span>
                      </label>
                      <label class="switch">
                        <input type="radio" class="switch-input" name="switches-stacked-radio" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Option 2</span>
                      </label>
                      <label class="switch">
                        <input type="radio" class="switch-input" name="switches-stacked-radio" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Option 3</span>
                      </label>
                    </div>
                  </div>
                
                  <div class="col-sm-6 p-6">
                    <div class="text-light small fw-medium mb-4">Square</div>
                    <div class="switches-stacked">
                      <label class="switch switch-square">
                        <input type="radio" class="switch-input" name="switches-square-stacked-radio" checked />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Option 1</span>
                      </label>
                      <label class="switch switch-square">
                        <input type="radio" class="switch-input" name="switches-square-stacked-radio" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Option 2</span>
                      </label>
                      <label class="switch switch-square">
                        <input type="radio" class="switch-input" name="switches-square-stacked-radio" />
                        <span class="switch-toggle-slider">
                          <span class="switch-on"></span>
                          <span class="switch-off"></span>
                        </span>
                        <span class="switch-label">Option 3</span>
                      </label>
                    </div>
                  </div>
                </div>

Variables

Variable Description
$switch-font-size Variable for switch font size
$switch-border-radius Variable for switch border radius
$switch-width Variable for default switch width
$switch-width-sm Variable for small switch width
$switch-width-lg Variable for large switch width
$switch-height Variable for large switch height
$switch-height-sm Variable for small switch height
$switch-height-lg Variable for large switch height
$switch-label-font-size Variable for default switch label font(icon) size
$switch-label-font-size-sm Variable for small switch label font(icon) size
$switch-label-font-size-lg Variable for large switch label font(icon) size
$switch-label-line-height Variable for default switch label line height
$switch-label-line-height-sm Variable for small switch label line height
$switch-label-line-height-lg Variable for large switch label line height
$switch-spacer-x Variable for switch horizontal spacing
$switch-spacer-y Variable for switch vertical spacing (.switches-stacked)
$switch-gutter Variable for switch gutter width
$switch-inner-spacer Variable for switch inner space
$switch-square-border-radius Variable for square switch border radius
$switch-label-color Variable for switch label color
$switch-label-disabled-color Variable for disabled switch label color
$switch-off-color Variable for off switch color
$switch-off-bg Variable for off switch background color
$switch-holder-bg Variable for switch holder color
$switch-holder-shadow Variable for switch holder shadow