Create A Fancy Progress Bar Using CSS3 And jQuery

Ivan Vanderbyl‘s cool CSS progress bar actually shows you a percentage of how much longer the process takes, unlike the others that just leave you guessing.

Progress Bar Create A Fancy Progress Bar Using CSS3 And jQueryClick on the screenshot above to see the code in action.

 

HTML Markup

<!DOCTYPE html>
<html>
<head>
<meta   charset="utf-8">
<title>Pure   CSS Progress Bar</title>
<link   rel="stylesheet" href="stylesheets/ui.css">
<link rel="stylesheet"   href="stylesheets/ui.progress-bar.css">
</head>
<body>
<div   id="container">
<div   id="progress_bar">
<div style="width:   79%;">
<span   style="display:none;">Processing   <b>79%</b></span>
</div><!-- .ui-progress -->
</div><!-- #progress_bar -->
<div   id="main_content" style="display:   none;">
<p>Hello,   World!</p>
</div><!--   #main_content -->
</div><!--   #container -->
</body>
</html>

 

Our CSS will kick off with the basic styles for the layout and then followed by some real serious stuff starting with @-webkit-keyframes animate-stripes {, which is the part that deals with the progress bar itself.

CSS3 Markup

body {
background:#eee;
padding: 30px;
font-size: 62.5%;
font-family: 'Helvetica   Neue', Helvetica, Arial, sans-serif;
position: relative;
margin: 0;
}
#container {
margin: 0 auto;
width: 460px;
padding: 2em;
background: #DCDDDF;
}
.ui-progress-bar {
margin-top: 3em;
margin-bottom: 3em;
}
.ui-progress span.ui-label {
font-size: 1.2em;
position: absolute;
right: 0;
line-height: 33px;
padding-right: 12px;
color: rgba(0,0,0,0.6);
text-shadow:   rgba(255,255,255, 0.45) 0 1px 0px;
white-space: nowrap;
}
@-webkit-keyframes   animate-stripes {
from {
background-position: 0 0;
}
to {
background-position: 44px 0;
}
}
.ui-progress-bar {
position: relative;
height: 35px;
padding-right: 2px;
background-color: #abb2bc;
border-radius: 35px;
-moz-border-radius: 35px;
-webkit-border-radius: 35px;
background:   -webkit-gradient(linear, left bottom, left top, color-stop(0, #b6bcc6),   color-stop(1, #9da5b0));
background:   -moz-linear-gradient(#9da5b0 0%, #b6bcc6 100%);
-webkit-box-shadow: inset 0px   1px 2px 0px rgba(0, 0, 0, 0.5), 0px 1px 0px 0px #FFF;
-moz-box-shadow: inset 0px   1px 2px 0px rgba(0, 0, 0, 0.5), 0px 1px 0px 0px #FFF;
box-shadow: inset 0px 1px 2px   0px rgba(0, 0, 0, 0.5), 0px 1px 0px 0px #FFF;
}
.ui-progress {
position: relative;
display: block;
overflow: hidden;
height: 33px;
-moz-border-radius: 35px;
-webkit-border-radius: 35px;
border-radius: 35px;
-webkit-background-size: 44px   44px;
background-color: #74d04c;
background:   -webkit-gradient(linear, 0 0, 44 44,
color-stop(0.00,   rgba(255,255,255,0.17)),
color-stop(0.25,   rgba(255,255,255,0.17)),
color-stop(0.26,   rgba(255,255,255,0)),
color-stop(0.50, rgba(255,255,255,0)),
color-stop(0.51,   rgba(255,255,255,0.17)),
color-stop(0.75,   rgba(255,255,255,0.17)),
color-stop(0.76,   rgba(255,255,255,0)),
color-stop(1.00,   rgba(255,255,255,0))
), -webkit-gradient(linear,   left bottom, left top, color-stop(0, #74d04c), color-stop(1, #9bdd62));
background:   -moz-repeating-linear-gradient(top left -30deg,
rgba(255,255,255,0.17),
rgba(255,255,255,0.17)   15px,
rgba(255,255,255,0) 15px,
rgba(255,255,255,0) 30px
),   -moz-linear-gradient(#9bdd62 0%, #74d04c 100%);
-webkit-box-shadow: inset 0px   1px 0px 0px #dbf383, inset 0px -1px 1px #58c43a;
-moz-box-shadow: inset 0px   1px 0px 0px #dbf383, inset 0px -1px 1px #58c43a;
box-shadow: inset 0px 1px 0px   0px #dbf383, inset 0px -1px 1px #58c43a;
border: 1px solid #4c8932;
-webkit-animation:   animate-stripes 2s linear infinite;
}

 

jQuery

Now that we’ve taken care of how the progress bar will look, it’s time for jQuery to do its magic by adding the animation. This is going to involve two steps:

Step 1: Paste this short code just before the closing body tag </body> of your html file.

<script   src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"   type="text/javascript" charset="utf-8"></script>
<script src="progress.js" type="text/javascript"   charset="utf-8"></script>

 

Step 2: Create a JavaScript (.js) file and paste this code in it.

({
width: progress+'%'
}, {
duration: 2000,
easing: 'swing(function(   $ ){
$.fn.animateProgress =   function(progress, callback) {
return this.each(function()   {
$(this).animate ',
step: function(   progress ){
var labelEl =   $('.ui-label', this),
valueEl =   $('.value', labelEl);
if   (Math.ceil(progress) < 20 && $('.ui-label',   this).is(":visible")) {
labelEl.hide();
}else{
if   (labelEl.is(":hidden")) {
labelEl.fadeIn();
};
}
if   (Math.ceil(progress) == 100) {
labelEl.text('Done');
setTimeout(function() {
labelEl.fadeOut();
}, 1000);
}else{
valueEl.text(Math.ceil(progress) + '%');
}
},
complete:   function(scope, i, elem) {
if (callback) {
callback.call(this,   i, elem );
};
}
});
});
};
})( jQuery );
$(function() {
$('#progress_bar .ui-progress   .ui-label').hide();
$('#progress_bar   .ui-progress').css('width', '7%');
$('#progress_bar .ui-progress').animateProgress(43,   function() {
$(this).animateProgress(79,   function() {
setTimeout(function() {
$('#progress_bar   .ui-progress').animateProgress(100, function() {
$('#main_content').slideDown();
});
}, 2000);
});
});
});

 

Now save your .js file and then try to open your HTML file to check it. Once the progress bar reaches 100 a small ‘Hello World’ message below it will appear. Hope you enjoy doing this tutorial, but more importantly, I hope that you’ll have fun incorporating this in to your website!

 

 

Incoming search terms for the article:

Related Posts

Customizing CSS Buttons with Pictogram Icons

Turn A Photo Into A Vector Portrait With Photoshop

Correctly Embed Watermarks In Portrait And Landscape Photos Using Conditional Actions In Photoshop CS6.1

Oregon-Inspired Photoshop Tutorial