Jquery animate() - полоса загрузки
Есть такой блок:
<div class="load-page"><div></div></div> Он зафиксирован у верхнего меню страницы, стиль:
.load-page{
display: none;
width: 100%;
height: 2px;
background: #0C0C0C;
position: fixed;
z-index: 90000;
top: 50px;
& div{
position: absolute;
background: #00FCED;
height: 2px;
width: 0%;
}
}
Сайт сёрфится с помощью history.js, при клике на ссылку посылается запрос и вызывается функция которая показывает эту полосу загрузки и плавно увеличивает размер внутреннего дива что в свою очередь эмитирует прогресс бар:
startLp: function(){
$('.load-page').show();
var l = $('.load-page div');
l.stop().animate({'width':'95%'},2000,function(){
$(this).stop().animate({'width':'98%'},15000);
});
}
В запросе callback рубит эту анимацию таким образом:
stopLp: function(){
var l = $('.load-page div');
l.stop().animate({'width':'100%'},500,function(){
$('.load-page').hide();
$(window).scrollTop(0);
});
}
Но проблема в том что анимация работает довольно криво, во-первых она срабатывает неравномерно, во вторых эта кривая анимация отображается только при загрузке первой страницы, а при остальных она появляется и тут же быстренько исчезает, а самой анимации почему-то не происходит. Почему такой косяк? Как сделать правильно? p.s. пытался добиться что-то наподобие как на youtube.com |
Sanu0074,
первая анимация от 0 до 95 все остальные от 100 до 95 и 95 до 98 |
Sanu0074,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.load-page{
display: none;
width: 102%;
height: 2px;
background: #0C0C0C;
position: fixed;
z-index: 90000;
top: 50px;
margin-left: -17px;
}
.load-page div{
position: absolute;
background: #00FCED;
height: 2px;
width: 0%;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(window).load(function(){
var obj = {
startLp: function(){
$('.load-page').css({display: 'block'})
.find('div').stop(true,true)
.css({width: '0%'}).animate({'width':'100%'},2000, obj.stopLp);
},
stopLp: function(){
$('.load-page').css({display: 'none'});
$(window).scrollTop(0);
}
} ;
window.setInterval(obj.startLp, 5000)
});
</script>
</head>
<body>
<div class="load-page"><div></div></div>
</body>
</html>
|
| Часовой пояс GMT +3, время: 21:08. |