JSFiddle - React, Tailwind, and code Playground
HTML
<div class="sliderbutton">
<div class="button rightSide">
<div class="left">ON</div>
<div class="mid">|||</div>
<div class="right active">OFF</div>
</div>
</div>
CSS
body{
background :#333;
}
.sliderbutton{
margin:30px auto;
width: 100px;
overflow: hidden;
height: 30px;
border-radius: 5px;
box-shadow: -1px -1px 5px 0px rgba(255, 255, 255, 0.3), 1px 1px 5px 0px rgba(0, 0, 0, 1);
}
.sliderbutton .button{
width: 150%;
position: relative;
left:0;
cursor: pointer;
}
.sliderbutton .button .left{
position: absolute;
left: 0;
width: 50%;
height: 30px;
background-color: #7BA9D6;
z-index: 1;
text-indent: 15px;
color: #333;
text-shadow:1px 1px rgba(255,255,255,0.3);
}
.sliderbutton .button .right{
position: absolute;
right: 0;
width: 50%;
height: 30px;
background-color: #F00;
z-index: 1;
text-indent: 35px;
color: #FFF;
}
.sliderbutton .button .mid{
position: absolute;
left: 50px;
width: 50px;
height: 30px;
background-color: #FFF;
z-index: 2;
background-image: -webkit-linear-gradient( top, rgba(0,0,0,0.4), rgba(0,0,0,0.1) );
border-radius: 5px;
box-shadow: 2px 2px 5px 0px rgba(255,255,255,1) inset, 0 0 5px 0px rgba(0, 0, 0, 1);
line-height: 30px;
text-align: center;
text-shadow:1px 1px rgba(255,255,255,0.3);
overflow: hidden;
}
.sliderbutton .left,.sliderbutton .right{
background-image: -webkit-linear-gradient( top, rgba(0,0,0,0.6), rgba(0,0,0,0.1) );
border-radius: 5px;
line-height: 30px;
font-weight: bold;
}
JavaScript
$('.button').click(function(){
if($(this).hasClass('rightSide')){
$(this).removeClass('rightSide');
$(this).stop().animate({left:'-50'});
}
else{
$(this).addClass('rightSide');
$(this).stop().animate({left:'0'});
}
});