JSFiddle - React, Tailwind, and code Playground
by Shawn Wood
HTML
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<div class="wrapper">
<div class="toggle_radio">
<input type="radio" class="toggle_option" id="mySavedFilter" name="toggle_option">
<input type="radio" checked class="toggle_option" id="globalFilter" name="toggle_option">
<input type="radio" class="toggle_option" id="sharedFilter" name="toggle_option">
<label class="" for="mySavedFilter" data-value="My Saved">My Saved</label>
<label class="" for="globalFilter" data-value="Global">Global</label>
<label class="" for="sharedFilter" data-value="Shared">Shared</label>
<label class="toggle_option_slider "></label>
</div>
CSS
.wrapper{
}
.toggle_radio{
position: relative;
background: rgba(244,244,244,1);
margin: 0px 0px;
overflow: hidden;
padding: 0 !important;
-webkit-border-radius: 0.25em;
-moz-border-radius: 0.25em;
border-radius: 0.25em;
position: relative;
height: 46px;
width: 322px;
}
.toggle_radio{
border: 1px #ccc solid;
}
.toggle_radio > * {
float: left;
}
.toggle_radio input[type=radio]{
display: none;
/*position: fixed;*/
}
.toggle_radio label{
color: #000;
z-index: 0;
display: block;
padding-top: 5px;
width: 100px;
height: 38px;
margin: 3px 3px;
/*
-webkit-border-radius: 0.25em;
-moz-border-radius: 0.25em;
border-radius: 0.25em;*/
cursor: pointer;
z-index: 1;
/*background: rgba(0,0,0,.1);*/
text-align: center;
/*margin: 0 2px;*/
/*background: blue;*/ /*make it blue*/
}
.toggle_radio > label:not(:nth-child(4)){
border-left: 1px #ccc solid;
}
.toggle_option_slider{
/*display: none;*/
/*background: red;*/
color: #000;
width: 100px;
height: 40px;
position: absolute;
top: 0px;
padding-top: 5px;
border: 1px #ccc solid;
-webkit-border-radius: 0.25em;
-moz-border-radius: 0.25em;
border-radius: 0.25em;
-webkit-transition: all .4s ease;
-moz-transition: all .4s ease;
-o-transition: all .4s ease;
-ms-transition: all .4s ease;
transition: all .4s ease;
}
#mySavedFilter:checked ~ .toggle_option_slider{
content:"Knives";
color: #000;
background: rgba(255,255,255,1);
left: 3px;
}
#globalFilter:checked ~ .toggle_option_slider{
content:"Forks";
color: #000;
background: rgba(255,255,255,1);
left: 109px;
}
#sharedFilter:checked ~ .toggle_option_slider{
content:"Spoons";
color: #000;
background: rgba(255,255,255,1);
left: 215px;
}
JavaScript
var getSelected = function(){
let thisId = $('.toggle_radio input[type="radio"]:checked').attr('id'),
thisValue = $('label[for="' + thisId + '"]').attr('data-value');
$('.toggle_option_slider').html(thisValue);
}
$(document).ready(function() {
getSelected();
$('.toggle_radio input[type="radio"]').on('change', function(event) {
getSelected();
});
});