Overlapping Toggle
by joplomacedo
HTML
<div class="toggleBlock is-active">
<div class="toggleSide toggleSideInactive">
Inactive
</div>
<div class="toggleSide toggleSideActive">
Active
</div>
<div class="toggleSlider"></div>
</div>
CSS
* {
box-sizing: border-box;
font-family: helveticaneue-light;
}
body {
width: 200px;
margin: 20px auto;
}
.toggleBlock {
overflow: hidden;
position: relative;
border: 1px solid black;
font-size: 0.8em;
text-transform: uppercase;
}
.toggleSide,
.toggleSlider {
padding-top: 5px;
padding-bottom: 6px;
}
.toggleSide {
padding-right: 7px;
padding-left: 7px;
}
.toggleSideActive {
float: left;
background: #eee;
-webkit-transition: 0.15s;
}
.toggleBlock.is-active .toggleSideActive {
width: 100%;
}
.toggleBlock.is-inactive .toggleSideActive,
.toggleSlider {
width: 30%;
}
.toggleSlider {
float: left;
margin-left: -30%; /* same as width above */
background: #fff;
box-shadow: 1px 0 black, -1px 0 black;
}
.toggleSlider:after {
/* for natural height*/
content: "C";
color: transparent;
}
.toggleSideInactive {
position: absolute;
z-index: -1;
top: 0;
bottom: 0;
left: 0;
width: 100%;
background: indianred;
text-align: right;
}
JavaScript
$('.toggleBlock').on('click', function () {
$(this).toggleClass('is-active is-inactive');
});