waitbar
by maxim75
HTML
<html>
<head>
<meta charset="utf-8" />
<title></title>
<!--<link href="mstyle.css" rel="stylesheet" type="text/css" />-->
<link href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css" rel="stylesheet" type="text/css" />
<link href="http://twitter.github.com/bootstrap/assets/css/bootstrap-responsive.css" rel="stylesheet" type="text/css" />
<style>
</style>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.8.0.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.js"></script>
<script src="http://twitter.github.com/bootstrap/assets/js/bootstrap.js"></script>
<script src="https://raw.github.com/joestelmach/laconic/master/laconic.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/backbone.modelbinder/0.1.3/Backbone.ModelBinder-min.js"></script>
<button id="go">Go</button>
<div id="waitBar" class="progress progress-striped span2">
<div class="bar" style="width: 100%;"></div>
</div>
</body>
</html>
CSS
#waitBar
{
height: 10px;
width: 200px;
opacity:0;
-webkit-transition: width 0s ease;
-webkit-transition: opacity .5s ease-in-out;
-moz-transition: opacity .5s ease-in-out;
-o-transition: opacity .5s ease-in-out;
transition: opacity .5s ease-in-out;
}
#waitBar .bar{
-webkit-transition: width 0.2s ease;
-moz-transition: width 0.2s ease;
-o-transition: width 0.2s ease;
transition: width 0.2s ease;
}
#waitBar.show
{
display: block;
-webkit-transition: width 0s ease;
opacity:1;
}
JavaScript
(function($){
$.fn.waitBar = function(timeout) {
var el = $(this);
var bar = $(this).find(".bar");
if(el.data("intervalid"))
{
window.clearInterval(el.data("intervalid"));
}
var start = new Date().getTime();
bar.css("width", "100%");
var intervalId = window.setInterval(function() {
var now = new Date().getTime();
var left = timeout - (now - start);
bar.css("width", Math.floor(left/timeout*100)+ "%");
if(left < 0)
{
window.clearInterval(intervalId);
el.removeClass("show").data("intervalid", null);
}
}, 100);
el.addClass("show").data("intervalid", intervalId);
};
})(jQuery);
$("#go").click(function() {
$("#waitBar").waitBar(1000);
});