<div class="switch-box">
  <input id="switch-me" type="checkbox">
  <label for="switch-me" class="option">
    <span class="active-state">ON</span>
    <i class="icon"></i>
    <span class="inactive-state">OFF</span>
  </label>
</div>
@import "lesshat";

.switch-box {
  position: relative;
  overflow: hidden;
  text-align: left;
  margin: 60px auto;
  width: 60px;
  padding: 5px;
  background: #e5e5e5;
  border: solid 1px #dddedf;
  border-radius: 50em;

  input {
    position: absolute;
    left: -9999em;
  }

  .option {
    cursor: pointer;
    display: block;
    background: none;
    position: relative;
    padding: 0;
    min-height: 0;
    width: 200px;
    left: -35px;
    transition: all ease-in-out 0.5s;
  }

  .active-state, .inactive-state {
    text-transform: uppercase;
    padding: 0 5px;
    font-family: Arial;
    vertical-align: middle;
    font-size: 15px;
    display: inline-block;
  }
  
  .inactive-state {
    padding-left: 0;
  }

  .icon {
    vertical-align: middle;
    width: 23px;
    height: 23px;
    background: #ac1f1f;
    border-radius: 50em;
    display: inline-block;
    transition: all ease-in-out 0.5s;
  }

  input:checked ~ .option {
    left: 0;

    .icon {
      background: #2f905d;
    }

  }

}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js