因為我們無法通過任何方法擷取整個頁面的大小和當前載入了多少,所以想製作一個載入進度條的唯一辦法就是類比。那要怎麼類比呢?
我們知道,頁面是從上往下執行的,也就是說我們可以大致估算出在頁面的某個位置載入了多少,而後用jq類比出一個進度條來顯示。
首先我們先畫一個進度條的樣子,也就是圖中的樣子,這個不用過多說明,自己看代碼
CSS
複製代碼 代碼如下:
.loading{position:relative;top:0;left:0}
.tip1{float:left;background:#A70000;color:#fff;height:32px;line-height:32px;padding:0 15px;border:0;position:relative}
.jindu{float:left;margin-left:20px;color:#fff;width:150px;height:32px;line-height:32px;background:#000;position:relative}
.jindu b{color:#A70000;width:0;height:0;font-size:0px;border-width:10px;border-color:#fff #fff #fff #A70000;border-style:solid;position:absolute;left:-20px;top:5px;overflow:hidden}
.jindu .jindu2{width:0px;height:32px;line-height:32px;background:#A70000;position:absolute}
.jindu .text{width:150px;height:32px;line-height:32px;text-align:center;position:absolute}
HTML
複製代碼 代碼如下:
<div class="loading">
<div class="tip1">系統初始化中</div>
<div class="jindu">
<b></b>
<div class="jindu2"></div>
<div class="text">頁面總進度 <font>0</font>%</div>
</div>
</div>
這時候注意了,我們要引用jquery庫,引用的位置不是在head地區,而是緊接著html代碼下面寫。為什麼要這樣,因為樣式我們放head裡的原因是保證頁面載入第一步就把樣式載入好,這樣頁面不會亂。而JS則不需要,再加上頁面上大的檔案主要也就是js,所以放在body裡載入js是為了進度條考慮。
進度條畫好了,jquery引用了,我們現在要寫個方法,也就是可以讓進度條動起來
複製代碼 代碼如下:
var loading = function(a,b){
var c = b*1.5;
if(b==100){
$('.bgloader .jindu2').animate({width:c+'px'},500,function(){
$('.bgloader .tip1').text(a);
$('.bgloader font').text(b);
$('.bgloader .loading').animate({top:'-32px'},1000,function(){
$('.bgloader').fadeOut();
});
});
}else{
$('.bgloader .jindu2').animate({width:c+'px'},500,function(){
$('.bgloader .tip1').text(a);
$('.bgloader font').text(b);
});
}
};
這裡我寫了個loading(a,b),兩個參數分別是顯示載入內容提示資訊和載入進度百分比,然後,我用了其他幾個js庫做載入進度測試
複製代碼 代碼如下:
<script type="text/javascript">loading('正在載入jQuery UI',30);</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<script type="text/javascript">loading('正在載入Chrome Frame',50);</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js"></script>
<script type="text/javascript">loading('正在載入EXTJS',70);</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core.js"></script>
<script type="text/javascript">loading('正在載入mootools',90);</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/mootools/1.4.1/mootools-yui-compressed.js"></script>
<script type="text/javascript">loading('正在載入dojo',100);</script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js"></script>
demo:點擊下載