1. 程式人生 > >Loading效果實現:載入新頁面前的等待過渡畫面

Loading效果實現:載入新頁面前的等待過渡畫面

由於最近在寫一個web專案,由於前端框架開發,和後臺查資料的語法不成熟導致頁面載入速度過慢,遂想到用loading效果來過渡:

粗略的查閱了下網上的實現方法,在此總結下方法實現

先上效果圖:

程式碼:

<link rel="stylesheet" href="http://lee.dkfirst.cn/lee_loading.css">
 <script src="http://lee.dkfirst.cn/lee_loading.js"></script>

上面兩段程式碼放在<head></head>中間即可

思路詳解:

JS部分

:在頁面載入前就先載入一個div罩,等待頁面全部載入完成後,關閉此div罩

//獲取瀏覽器頁面可見高度和寬度  
var _PageHeight = document.documentElement.clientHeight,
    _PageWidth = document.documentElement.clientWidth;
//計算loading框距離頂部和左部的距離(loading框小部件的寬度為90px,高度為90px)  
var _LoadingTop = _PageHeight > 90 ? (_PageHeight - 90) / 2 : 0,
    _LoadingLeft = _PageWidth > 90 ? (_PageWidth - 90) / 2 : 0;
//在頁面未載入完畢之前顯示的loading Html自定義內容  
var _LoadingHtml = '<div id="loadingDiv" style="position:absolute;left:0;width:100%;height:' + _PageHeight + 'px;top:0;background:#FFFFFF;opacity:1.0;
                    filter:alpha(opacity=80);z-index:10000;">
                    <div class="spinner" style="position: top: 60px; margin:' + _LoadingTop + 'px auto ;"></div></div>';
//呈現loading效果  
document.write(_LoadingHtml);

//監聽載入狀態改變  
document.onreadystatechange = completeLoading;

//載入狀態為complete時移除loading效果  
function completeLoading() {
    if (document.readyState == "complete") {
        //此引用了Jquery,頁面沒有導jq包的,需要自行加入
$("#loadingDiv").fadeOut(1500); } } CSS部分:CSS3構造一個無限迴圈動作的loading框 .spinner { width: 60px; height: 60px; background-color: #67CF22; margin: 100px auto; -webkit-animation: rotateplane 1.2s infinite ease-in-out; animation: rotateplane 1.2s infinite ease-in-out; } @-webkit-keyframes rotateplane { 0% { -webkit-transform: perspective(120px) } 50% { -webkit-transform: perspective(120px) rotateY(180deg) } 100% { -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg) } } @keyframes rotateplane { 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg) } 50% { transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg) } 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); } }