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%;
}