1. 程式人生 > >網頁loading(載入)效果的實現

網頁loading(載入)效果的實現

說到頁面loading效果,現在各種PC端和移動端的應用使用loading都十分的廣泛,這是因為頁面的載入時需要時間的,如果頁面載入很快,loading的作用可能還不是特別能夠體現,但是如果當頁面載入速度不是很快甚至很慢的時候,頁面就會出現白屏的狀況,如果沒有使用loading來和使用者進行互動,使用者並不知道應用到底是出現什麼問題(卡死、出錯或者在載入)那麼就會十分的影響使用者體驗,頁面載入所需要時間越長,那麼可能損失的使用者量就會多。所以在恰當的時候使用loading是解決網頁載入緩慢時與使用者互動的最好解決方案。下面就說一說筆者本人如何實現頁面loading效果的。如有大家更好的解決方案,也可以分享出來。

簡單loading效果的實現

loading直譯就是正在載入中的意思,也就是在頁面載入的時候loading效果要出現,頁面載入完成的時候讓其消失。那麼以什麼來判斷頁面載入完成為節點去取消loading效果很重要,DOM元素載入完成,還是頁面中的所有關聯檔案(包括圖片),jquery給出了兩個函式來判斷這兩個節點,$(document).ready()是在頁面上所有DOM元素載入完畢後才執行$(window).load();方法是在網頁中所有的元素(包括元素的關聯檔案)完全載入到瀏覽器後才執行,如何選擇則看實際情況去選擇,筆者使用的是$(window).load()方法,因為頁面上一般來說圖片的載入最耗費時間,弄清楚這個的話,實現起來就不復雜了,在頁面<body>標籤的頂部來新增loading層,以為DOM元素的載入時從上往下的,放在最頂部可以保證loading效果會最早出現。
[css] view plain copy  print?
  1. <div id="loading">  
  2.   <img src="photos/loading/2.gif" class="img-responsive">  
  3. </div><pre name="code" class="css">  
[css] view plain copy  print?
  1. #loading  
  2. {  
  3.     position:fixed;  
  4.     top:40%;  
  5.     left:45%;  
  6.     z-index:999;  
  7. }  
載入的動態圖可以自己定義,但是越小越好,以為頁面中圖片的載入時無序的,動態圖太大,可能載入不出來,導致效果無法實現。loading效果出現後,在頁面載入完成後,就要讓其消失。
[html] view plain copy  print?
  1. $(window).load(function(){  
  2.     //適當延遲隱藏,提高loading效果  
  3.     //$('#loading_all').delay(1000).hide(0);  
  4.     $('#loading_bottom').hide(0);  
  5. });  
到這裡一個簡單的loading效果就完成了,如果不想在每個頁面中都加入loading層,那麼可以寫一個通用的方法,在頁面初始化的時候,向頁面中插入loading層。 [html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. var str = "";     
  2. str+="<divid=\"loading\">";  
  3. str+="   <imgsrc=\"${ctx}photos/loading/2.gif\" class=\"img-responsive\">";  
  4. str+="</div>";  
  5. var htmldata = str;  
  6. $ ('body *:first').before(htmldata);  
下面提供一種針對ajax請求loading效果實現的方法,僅供參考。 [html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. $(window).load(function(){  
  2.     //為ajax繫結loading_bottom  
  3.     $(document).ajaxStart(function(){  
  4.         $("#loading").show();//在ajax請求開始的時候啟用loading  
  5.     }).ajaxStop(function(){  
  6.         $('#loading').hide(0);//在ajax請求結束後隱藏loading  
  7.     });  
  8. });  

仿部分原生APPloading效果的實現

大家可以看到部分原生APP的loading效果是在載入的時候好像先進入一個loading頁面,在目標頁面載入完成後,才跳轉到另一個頁面,在載入過程中你是看不到需要載入的頁面情況的。那麼這個效果應該如何實現?

首先想到的就是在頁面頂部加入一個loading層,這個層的高度和寬度和頁面的高度和寬度應該一樣,並且遮蓋著這個頁面,在這個層的中間加入loading圖或者CSS3寫的loading效果,簡單的思路成型了。

[html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. <divid="loading_all">
  2.          <div>
  3.              <imgsrc="photos/loading/1.gif"class="img-responsive">
  4.          </div>
  5. </div>
[html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. #loading_all  
  2. {        width:100%;  
  3.         height:100%;  
  4.         position:fixed;  
  5.         z-index:999;  
  6.         background-color:white;  
  7. }  
[html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. #loading_all div  
  2. {  
  3.       position:absolute;  
  4.     width:60px;  
  5.     height:60px;  
  6.     top:50%;  
  7.     margin-top:-60px;  
  8.     left:50%;  
  9.     margin-left:-30px;  
  10. }  
在頁面頂部加入loading層之後,那麼整個真實載入的頁面就被遮蓋了,但是如果下層的頁面高度是高於整個螢幕的高度,那麼就會出現滾動條,使用者在載入的時候是可以拖動滾動條的,雖然loading層的定位是使用fixed,但是還是會影響一些效果,那麼這個時候我們就需要在頁面載入的時候禁用滾動條,然後再頁面載入完成,取消loading效果的時候再恢復滾動條。禁用滾動條就在<body>標籤上加上class="scoll_dis" [html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. /*滾動條禁用*/  
  2. .scoll_dis  
  3. {  
  4.     overflow:scroll;  
  5.     overflow-y:hidden;  
  6. }  

頁面載入完成後恢復滾動條。

[html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. $(window).load(function(){  
  2.     $('#loading_all').delay(300).hide(0);  
  3.     setTimeout(function(){  
  4.         $('body').removeClass("scoll_dis");  
  5.     },300);  
  6. });  
PC端的loading效果就完成了,為什麼說PC端,是因為以上禁用滾動條的方法在移動端是無效的,螢幕還是可以被拖動。所以針對移動端,在頁面載入時要禁止螢幕的觸控事件,載入完成後要恢復觸控事件。 [html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. //阻止觸控事件  
  2. document.addEventListener("touchmove", myFunction);  
  3. function myFunction(e) {  
  4.     e.preventDefault();   
  5. }  
[html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. //解除觸控鎖定  
  2. document.removeEventListener("touchmove", myFunction);  
這樣一個相容移動端的效果就實現了。

相關推薦

網頁loading(載入)效果實現

說到頁面loading效果,現在各種PC端和移動端的應用使用loading都十分的廣泛,這是因為頁面的載入時需要時間的,如果頁面載入很快,loading的作用可能還不是特別能夠體現,但是如果當頁面載入速度不是很快甚至很慢的時候,頁面就會出現白屏的狀況,如果沒有使用load

【Android】Android開發之常用的loading等待效果實現,仿微博等待動畫。兩種實現方式詳解

長期維護的Android專案,裡面包括常用功能實現,以及知識點詳解, 當然還有Java中的知識點。 具體請看github:https://github.com/QQ986945193/DavidAndroidProjectTools 首先大家都知道,當我

簡單實用的JS實現頁面載入完畢之前loading提示效果(相容性較強的loading載入程式碼)

一種簡單實用的JS實現頁面載入完畢之前loading提示效果 做成js呼叫即可: 一、JS程式碼: var _PageHeight = document.documentElement.clientHeight, _PageWidth = documen

JS實現頁面載入結束之前Loading提示效果

//獲取瀏覽器頁面可見高度和寬度 var _PageHeight = document.documentElement.clientHeight,     _PageWidth = document.documentElement.clientWidth; //計算loa

css3實現三種不同的loading載入動畫效果

HTML: <div class="box"> <div class="loader"> <div class="loading-1">

JS實現頁面載入完畢之前loading提示效果

做成js呼叫: base-loading.js程式碼 /******************************************* * * 建立人:Quber([email protected]) * 建立時間:2014年6月10日 *

css實現載入loading動畫效果

1.html<div class="load-container"> <div class="loader"></div> <p>載入中請稍後...</p> </div>2.css.load

關於網頁載入,頁面頂部顯示頁面載入線性進度條效果實現

今早早逛淘寶的時候突然發現淘寶每次在點選進入下頁的時候的頁面頂部就會出現頁面載入進度效果,其實之前在訪問好多國外的網站的時候也見過這樣的效果,突然一時興起想要知道如何實現。 如圖所示: 然後就百度一下,竟然找到了兩款外掛,。 外掛一:LoadingBa

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

由於最近在寫一個web專案,由於前端框架開發,和後臺查資料的語法不成熟導致頁面載入速度過慢,遂想到用loading效果來過渡: 粗略的查閱了下網上的實現方法,在此總結下方法實現 先上效果圖: 程式碼: <link rel="stylesheet" href="http://lee.dkf

正在下載中,請稍候的Loading載入中浮層效果實現

背景: 當實現下載檔案等後臺需長時間處理時,使用者點選頁面的一個按鈕或連結,應給予使用者一定提示告知使用者後臺正在處理中,稍後返回結果。 目前常見的處理方法有頁面跳出圖層,比如"Loading…",“後

ionic中第三方網頁,pdf等的載入處理和loading動畫的實現

前言 在ionic中,有一款cordova外掛inAppBrowser可以實現外部網頁的載入,然而現在我們不用這款外掛,使用iframe的方式來實現。 效果預覽 必要說明:在pdf.js的預覽檔案訪問需要翻牆才能看到效果,關於存在的跨域問題,我們在

網頁正在載入中,效果實現

<html> <head> <title>JS網頁載入進度條 </title> <meta http-equiv="content-Type" c> </head> <body>  <script language="j

C# 運用Jquery和Div實現Loading載入提示效果

載入效果圖: 載入後的圖: Html程式碼: <div id="bg"></div> <div id="center"> <div style="float: left; padding-top: 12px; pa

幾種常見的載入中、loading頁面效果實現方法總結

<html> <head> <title>正在載入...</title> <meta http-equiv="Content-Type" c> </head> <body bgcolor="#FFFFFF" leftmargin="

利用css3的animation實現點點點loading動畫效果(二)

設置 str ack rdp 提交 ssi frame spin color box-shadow實現的打點效果 簡介 box-shadow理論上可以生成任意的圖形效果,當然也就可以實現點點點的loading效果了。 實現原理 html代碼,首先需要寫如下html代

Android學習---使用非同步內部類實現進度條載入效果

Android學習—使用非同步內部類 為什麼要用AsyncTask? 答:我們可以用上述兩種方法來完成我們的非同步操作,加入要我們寫的非同步操作比較多,或者較為繁瑣, 難道我們new Thread()然後用上述方法通知UI更新麼?程式設計師都是比較喜歡偷懶的,既然官方給我 們

頁面loading效果實現程式碼

有些頁面載入起來比較慢,為了加強使用者體驗效果,所以一般都會做一個頁面載入等待的提示,頁面載入完成後消失。 下面提供一個可以拿來即用的方案。 <!DOCTYPE html> <html lang="en"> <head> <meta

Flask + Ajax + Mysql 實現網頁非同步載入(二)

Flask + Ajax + Mysql 實現網頁非同步載入(一) 二、jquery 和Ajax 實現前端請求 <script src="static/js/jquery.min.js" > </script> <script type="text/java

Flask + Ajax + Mysql 實現網頁非同步載入(一)

滾動條滑到底部時候,在當前頁面載入下一頁資料; 滾動條到達頂部時候,重新整理當前頁面。 一、flask 實現的伺服器端 @app.route('/',methods=['GET','POST']) def index(): '''新聞首頁''' page = reques

Android中ListView下拉重新整理上拉載入更多效果實現

  在Android開發中,下拉重新整理和上拉載入更多在很多app中都會有用到,下面就是具體的實現的方法。 首先,我們自定義一個RefreshListView來繼承與ListView,下面是程式碼: package com.example.downrefresh; import