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");
}
});