JSFiddle - React, Tailwind, and code Playground
by Rohit Bisht
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<div class="container" style="padding-top:20px;">
<div class='rangeWrap slidecontainer'>
<input type="range" min="1" max="3" class="slider" step="1" value="1" />
<div class='ticks-marks'>
<div></div>
<div></div>
<div></div>
</div>
<div class='ticks'>
<div>Yearly</div>
<div>Half-Yearly</div>
<div>Quaterly</div>
</div>
</div>
</div>
CSS
.slidecontainer {
width: 100%;
}
.slider {
-webkit-appearance: none;
width: 100%;
height: 2px;
border-radius: 5px;
background: #b70021;
outline: none;
opacity: 1;
z-index: 999;
-webkit-transition: 1.2s;
transition: opacity 1.2s;
-webkit-transition: 300ms linear;
-moz-transition: 300ms linear;
-o-transition: 300ms linear;
-ms-transition: 300ms linear;
transition: 300ms linear;
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 25px;
height: 25px;
border-radius: 50%;
background: #7582ff;
cursor: pointer;
-webkit-transition: 300ms linear;
-moz-transition: 300ms linear;
-o-transition: 300ms linear;
-ms-transition: 300ms linear;
transition: 300ms linear;
}
.slider::-moz-range-thumb {
width: 25px;
height: 25px;
border-radius: 50%;
background: #7582ff;
cursor: pointer;
}
.rangeWrap .ticks-marks {
display: flex;
height: 20px;
justify-content: space-between;
}
.rangeWrap .ticks-marks>div {
width: 2px;
height: 15px;
border: 2px solid #b70021;
z-index: 1;
}
.rangeWrap .ticks-marks>div:first-child {
margin-left: 10px;
}
.rangeWrap .ticks-marks>div:last-child {
margin-right: 10px;
}
.rangeWrap .ticks {
display: flex;
justify-content: space-between;
height: 6px;
font: 10px bold;
}
.rangeWrap .ticks>div:nth-child(n) {
padding-top: 1px;
height: 10px;
text-align: center;
font: 1.5em solid;
}
.rangeWrap .ticks>div:nth-child(n)::before {
display: block;
text-align: center;
width: 10%;
}