Loading Bar Using Jquery and CSS

In this tutorial we will see how to create a Loading Bar Using Jquery and CSS. JQuery .animate() method and .width() method are used for this purpose.

HTML Code

HTML Code is given below.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Loading Bar Using Jquery and CSS</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
    <div class='outer'>
      <div class="inner">
        <span class="value"></span>
      </div>
    </div>
</body>
</html>

CSS Code

CSS Code is given below, The width of inner div is set to 0 initially which is then increased with help of Jquery. The value of loading bar is displayed in the middle using position property of CSS.

body {
margin: 0;
padding: 0;
font-family: 'Open Sans',sans-serif;
display: flex;
height: 100vh;
justify-content: center;
align-items: center;
background-color: #58fc87;
}
.inner {
width: 0px;
height: 40px;
background: #22438c;
position: relative;
}
.outer {
border: 1px solid #000;
width: 800px;
background: #fff;
}
.value {
position: absolute;
right: 0;
top: 25%;
color: #fff;
font-size: 14px;
}

JQuery Code

JQuery Code is given below, In this code we are increasing or animating the width of inner div using .animate() method of Jquery. The width of loading bar is calculated using .width() method with respect to the outer div.

This value is then used as textual content of span element. This tells the percentage of the bar that has been loaded. step: function is used for this purpose while the text content is removed using complete function once the bar is completely loaded.

<script>
$(document).ready(function() {
$(".inner").animate({
width: "100%"}, 
{
duration: 7000,
step: function() {
let width = $(this).width() / $('.inner').parent().width() * 100;
width = Math.ceil(width) + "%";
$(".value").text(width);
},
complete: function() {
$(".value").text("");
}
});
});
</script>

Video Tutorial

Watch video tutorial on how to create Loading Bar Using Jquery and CSS.