JavaScript實(shí)現(xiàn)網(wǎng)頁加載進(jìn)度條代碼超簡單
網(wǎng)頁進(jìn)度條能夠更好的反應(yīng)當(dāng)前網(wǎng)頁的加載進(jìn)度情況,loading進(jìn)度條可用動(dòng)畫的形式從開始0%到100%完成網(wǎng)頁加載這一過程。但是目前的瀏覽器并沒有提供頁面加載進(jìn)度方面的接口,也就是說頁面還無法準(zhǔn)確返回頁面實(shí)際加載的進(jìn)度,本文中我們使用jQuery來實(shí)現(xiàn)頁面加載進(jìn)度條效果。
HTML
首先我們要知道的是,目前沒有任何瀏覽器可以直接獲取正在加載對象的大小。所以我們無法通過數(shù)據(jù)大小來實(shí)現(xiàn)0-100%的加載顯示過程。
因此我們需要通過html代碼逐行加載的特性,在整頁代碼的若干個(gè)跳躍行數(shù)中設(shè)置節(jié)點(diǎn),進(jìn)行大概的模糊進(jìn)度反饋來實(shí)現(xiàn)進(jìn)度加載的效果。大致意思是:頁面每加載到指定區(qū)域,則返回(n)%的進(jìn)度結(jié)果,通過設(shè)置多個(gè)節(jié)點(diǎn),來達(dá)到一步一步顯示加載進(jìn)度的目的。
假如有一個(gè)頁面,按區(qū)塊分為頁頭、左側(cè)內(nèi)容、右邊側(cè)欄、頁腳四部分,我們把這四部分作為四個(gè)節(jié)點(diǎn),當(dāng)頁面加載每一個(gè)節(jié)點(diǎn)后,設(shè)置大概加載百分比,頁面結(jié)構(gòu)如下:
<div id="header"> 頁頭部分 </div> <div id="mainpage"> 左側(cè)內(nèi)容 </div> <div id="sider"> 右邊側(cè)欄 </div> <div id="footer"> 頁腳部分 </div>
然后我們在<body>下的第一行加上進(jìn)度條.loading。
<div class="loading"></div>
CSS
我們要設(shè)置loading進(jìn)度條的樣式,設(shè)置背景色,高度,以及位置,優(yōu)先級(jí)等。
.loading{ background:#FF6100; //設(shè)置進(jìn)度條的顏色 height:5px; //設(shè)置進(jìn)度條的高度 position:fixed; //設(shè)定進(jìn)度條跟隨屏幕滾動(dòng) top:0; //將進(jìn)度條固定在頁面頂部 z-index:99999 //提高進(jìn)度條的優(yōu)先層級(jí),避免被其他層遮擋 }
jQuery
接下來,我們要在每個(gè)節(jié)點(diǎn)后面加上進(jìn)度動(dòng)畫,使用jQuery來實(shí)現(xiàn)。
<div id="header"> 頁頭部分</div> <script type="text/javascript"> $('.loading').animate({'width':'33%'},50); //第一個(gè)進(jìn)度節(jié)點(diǎn) </script> <div id="mainpage"> 左側(cè)內(nèi)容 </div> <script type="text/javascript"> $('.loading').animate({'width':'55%'},50); //第二個(gè)進(jìn)度節(jié)點(diǎn) </script> <div id="sider"> 右邊側(cè)欄 </div> <script type="text/javascript"> $('.loading').animate({'width':'80%'},50); //第三個(gè)進(jìn)度節(jié)點(diǎn) </script> <div id="footer"> 頁腳部分 </div> <script type="text/javascript"> $('.loading').animate({'width':'100%'},50); //第四個(gè)進(jìn)度節(jié)點(diǎn) </script>
可以看出,沒加載一個(gè)節(jié)點(diǎn)后,jQuery調(diào)用animate()動(dòng)畫方法實(shí)現(xiàn)進(jìn)度條寬度的變化,每個(gè)節(jié)點(diǎn)變化以50毫秒時(shí)間讓進(jìn)度條看起來更流暢些,最終從0%變化到100%,完成了進(jìn)度條的進(jìn)度動(dòng)畫。
當(dāng)進(jìn)度條達(dá)到100%后,頁面加載完成,最后還有一步要做的就是隱藏進(jìn)度條。
$(document).ready(function(){ $('.loading').fadeOut(); });
- 簡單實(shí)現(xiàn)js進(jìn)度條加載效果
- pace.js頁面加載進(jìn)度條插件
- javascript 實(shí)現(xiàn)頁面加載進(jìn)度條代碼
- js ajax加載時(shí)的進(jìn)度條代碼
- js+HTML5 canvas 實(shí)現(xiàn)簡單的加載條(進(jìn)度條)功能示例
- jquery插件NProgress.js制作網(wǎng)頁加載進(jìn)度條
- 淺析JS異步加載進(jìn)度條
- JS實(shí)現(xiàn)進(jìn)度條動(dòng)態(tài)加載特效
- 環(huán)形加載進(jìn)度條封裝(Vue插件版和原生js版)
- JavaScript canvas繪制圓形加載進(jìn)度條
相關(guān)文章
js prototype深入理解及應(yīng)用實(shí)例分析
這篇文章主要介紹了js prototype深入理解及應(yīng)用,結(jié)合實(shí)例形式分析了JavaScript prototype屬性功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2019-11-11JS多個(gè)表單數(shù)據(jù)提交下的serialize()應(yīng)用實(shí)例分析
這篇文章主要介紹了JS多個(gè)表單數(shù)據(jù)提交下的serialize()應(yīng)用,接合實(shí)例形式分析了原生javascript實(shí)現(xiàn)多個(gè)表單提交時(shí)serialize操作相關(guān)使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2019-08-08小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的圖文教程
最近在開發(fā)中遇到了一個(gè)需求,需要獲取小程序的全部數(shù)據(jù),所以這篇文章主要給大家介紹了關(guān)于小程序中實(shí)現(xiàn)獲取全部數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2022-11-11詳解js私有作用域中創(chuàng)建特權(quán)方法
這篇文章主要為大家詳細(xì)介紹了js私有作用域中創(chuàng)建特權(quán)方法,何為特權(quán)方法,特權(quán)方法就是有權(quán)訪問私有變量和私有函數(shù)的公有方法,感興趣的小伙伴們可以參考一下2016-01-01javascript創(chuàng)建cookie、讀取cookie
這篇文章主要介紹了javascript創(chuàng)建cookie、讀取cookie的操作方法,內(nèi)容簡單易學(xué),感興趣的小伙伴們可以參考一下2016-03-03新發(fā)現(xiàn)一個(gè)騙鏈接的方法(js讀取cookies)
新發(fā)現(xiàn)一個(gè)騙鏈接的方法(js讀取cookies),需要的朋友可以參考下。2012-01-01JavaScript isArray()函數(shù)判斷對象類型的種種方法
我們知道,JavaScript中檢測對象類型的運(yùn)算符有:typeof、instanceof,還有對象的constructor屬性2010-10-10基于JavaScript實(shí)現(xiàn)購物車功能
這篇文章主要為大家詳細(xì)介紹了基于JavaScript實(shí)現(xiàn)購物車功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02