Toggle

by Andrey Izman

HTML

<div class="group-preferences">

  <div class="group">
    <div class="btn-toggle btn-toggle-onstate">
      <div class="btn-toggle-container">
        <div class="btn-toggle-option">No</div>
        <div class="btn-toggle-option btn-toggle-active">Yes</div>
      </div>
      <div class="btn-toggle-selector"></div>
      <div class="hidden">
        <input type="checkbox" name="id" checked="checked">
        <input type="hidden" name="id.hidden" value="value">
      </div>
    </div>
    <div class="group-name">Title content</div>
    <div class="group-description">Description content.</div>
  </div>

  <div class="group">
    <div class="btn-toggle btn-toggle-offstate">
      <div class="btn-toggle-container">
        <div class="btn-toggle-option btn-toggle-active">No</div>
        <div class="btn-toggle-option">Yes</div>
      </div>
      <div class="btn-toggle-selector"></div>
      <div class="hidden">
        <input type="checkbox" name="id" checked="checked">
        <input type="hidden" name="id.hidden" value="value">
      </div>
    </div>
    <div class="group-name">Title content</div>
    <div class="group-description">Description content.</div>
  </div>

  <div class="group">
    <div class="btn-toggle btn-toggle-offstate">
      <div class="btn-toggle-container">
        <div class="btn-toggle-option btn-toggle-active">No</div>
        <div class="btn-toggle-option">Yes</div>
      </div>
      <div class="btn-toggle-selector"></div>
      <div class="hidden">
        <input type="checkbox" name="id" checked="checked">
        <input type="hidden" name="id.hidden" value="value">
      </div>
    </div>
    <div class="group-name">Title content</div>
    <div class="group-description">Description content.</div>
  </div>

  <div class="group">
    <div class="btn-toggle btn-toggle-offstate">
      <div class="btn-toggle-container">
        <div class="btn-toggle-option btn-toggle-active">No</div>
        <div class="btn-toggle-option">Yes</div>
    ...

SCSS

body {
  font-family: Arial;
}
.group {
  border-top: 1px solid #D8D8D8;
  color: #676767;
  font-size: 16px;
  line-height: 30px;
  padding: 36px 0;
  text-align: left;
  position: relative;
  user-select: none;
}
.btn-toggle {
  padding: 0;
  position: relative;
  font-size: 0;
  border: none;
  cursor: pointer;
  display: inline-block;
  font-size: 10px;
  margin: 10px;
  text-align: center;
  height: 30px;
}
.group .btn-toggle {
  margin-top: -20px;
  position: absolute;
  right: 0;
  top: 50%;
}
.btn-toggle-container {
  border: 1px solid rgba(40,69,96,0.20);
  border-radius: 2px;
  font-size: 0;
  height: 30px;
}
.btn-toggle-option {
  border-radius: 2px;
  border-style: solid;
  border-width: 1px;
  cursor: pointer;
  display: inline-block;
  font-size: 10px;
  padding: 0;
  text-align: center;
  margin: 0;
  text-transform: uppercase;
  border: none;
  color: rgba(40,69,96,0.60);
  position: relative;
  z-index: 2;
  top: 0;
  left: 0;
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.btn-toggle-active {
  color: #FFFFFF;
}
.btn-toggle-selector {
  background-color: #1a82e2;
  position: absolute;
  width: 31px;
  height: 31px;
  top: 0;
  left: 0;
  border-radius: 2px;
  z-index: 1;
}
.btn-toggle.btn-toggle-offstate .btn-toggle-selector {
  -webkit-transition-property: -webkit-transform;
  -moz-transition-property: -moz-transform;
  -o-transition-property: -o-transform;
  transition-property: transform;
  -webkit-transition-duration: 250ms;
  -moz-transition-duration: 250ms;
  -o-transition-duration: 250ms;
  transition-duration: 250ms;
  -webkit-transform: translate(0,0);
  -moz-transform: translate(0,0);
  -ms-transform: translate(0,0);
  -o-transform: translate(0,0);
  transform: translate(0,0);
  transition-timing-function: ease-out;
}
.btn-toggle.btn-toggle-onstate .btn-toggle-selector {
  -webkit-transition-property: -webkit-transform;
  -moz-transition-property: -moz-transform;
  -o-transition-property: -o-transform;
  transition-property:...

JavaScript

$(".btn-toggle").on("click", function() {
  var $toggle = $(this);
  var options = $toggle.find(".btn-toggle-option");
  if ($toggle.is(".btn-toggle-onstate")) {
  	$toggle.removeClass("btn-toggle-onstate");
  	$toggle.addClass("btn-toggle-offstate");
    options.eq(1).removeClass("btn-toggle-active");
    options.eq(0).addClass("btn-toggle-active");
  } else {
  	$toggle.removeClass("btn-toggle-offstate");
  	$toggle.addClass("btn-toggle-onstate");
    options.eq(0).removeClass("btn-toggle-active");
    options.eq(1).addClass("btn-toggle-active");
  }
});