<div class="demoContainer">
  <div class="projHeader">
    <div class="primaryText">Pagination UI</div>
    <div class="createdBy">Created By <a href="https://www.dropinks.com/pagination-ui-for-web-app/">Dropinks</a>/<a href="https://dribbble.com/shots/17066526-Pagination-UI-for-Web-App" target="_blank">Dribbble</a></div>
    <p class="message">For Better usability and interaction use web browsers - chrome, firefox</p>
  </div>



  <div class="paginationContainer" id="paginationContainer">
    <span class="pageInnerElm" id="pageInnerElm"></span>
    <ul class="paginationUl" id="paginationUl">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
  </div>
</div>
.demoContainer{position: absolute; left: 50%; top: 40%; transform: translate(-50%, -50%); width: 400px;} 
.primaryText{
  font-weight: 300;
  font-size: 50px;
  text-shadow: 2px 2px 1px rgba(0,0,0,0.3);
}
.secondaryText{
  font-weight: 300;
  font-size: 25px;
}
.createdBy {
  font-weight: 300;
  font-size: 17px;
  margin-top: 10px;
}
.createdBy a{
  color: #333;
  font-weight: 500;
}
.message {
  background: rgba(255, 255, 255, 0.31);
  padding: 10px;
  display: inline-block;
  text-align: center;
  color: #000;
  margin: 25px 0;
  font-size: 13px;
  box-shadow: 2px 2px 0px 1px rgba(0,0,0,0.2);
  border-radius: 4px;
}
.projHeader{
  text-align: center;
}

body{background: #333; font-family: poppins;}
.projHeader, .createdBy a, .message{color: #fff;}
.message{background: rgba(255, 255, 255, 0.1);}


.paginationContainer{
  position: relative;
  display: flex;
  justify-content: center;
}
.paginationUl{
  list-style-type: none;
  margin: 0; 
  padding: 0;
}
.paginationUl li{
  box-sizing: border-box;
  border: 2px solid #fff;
  border-radius: 20px;
  float: left;
  width: 22px;
  height: 22px;
  margin: 0px 10px;
  cursor: pointer;
}
.pageInnerElm{
  content: "";
  position: absolute;
  left: 0px;
  top: 6px;
  width: auto;
  height: 10px;
  border-radius: 20px;
  background: #fd1874;
  display: none;
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.pageInnerElm.inProgress{
  transform: scaleY(0.4);
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), right  0.3s ease 0.1s, left 0.3s ease 0.1s;
}
var paginationContainer = $("#paginationContainer");
var ul = $("#paginationUl");
var pageInnerElm = $("#pageInnerElm");
var ulLeft, ulRight;

function setActiveLi(elm){
  var activeElm = ul.find("li.activeLi");
  activeElm.removeClass("activeLi");
  elm.addClass("activeLi");
}
function setPageInnerElm(liIndex){
  var firstLi = $(ul.find("li")[liIndex]);
  setActiveLi(firstLi);
  var offset = {};
  offset.left = firstLi.offset().left-paginationContainerLeft+6;
  offset.right = window.innerWidth-firstLi.offset().left-paginationContainerLeft-16;

  return offset;
}
$(document).ready(function(){
  paginationContainerLeft = paginationContainer[0].getBoundingClientRect().left;
  paginationContainerRight = paginationContainer[0].getBoundingClientRect().right;
  var offset = setPageInnerElm(0);
  pageInnerElm.css({"display": "block", "left": offset.left+"px", "right": offset.right+"px"});
})

ul.on("click", function(ev){
  var activeElm = $(".activeLi");
  var activeElmIndex = activeElm.index();

  var targetElm = $(ev.target);
  if(targetElm[0].nodeName === "LI"){
    var targetElmIndex = targetElm.index();
    var offset = setPageInnerElm(targetElmIndex);

    pageInnerElm.addClass("inProgress");
    if(targetElmIndex>activeElmIndex){
      pageInnerElm.css({"right":offset.right+"px"});
      pageInnerElm.off('transitionend');
      pageInnerElm.on('transitionend', function() {	
        pageInnerElm.css({"left":offset.left+"px"});
        pageInnerElm.removeClass("inProgress");
      })
    }
    else{
      pageInnerElm.css({"left":offset.left+"px"});
      pageInnerElm.off('transitionend');
      pageInnerElm.on('transitionend', function() {	
        pageInnerElm.css({"right":offset.right+"px"});
        pageInnerElm.removeClass("inProgress");
      })
    }
  }
});

External CSS

  1. https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js