搜尋
首頁web前端H5教程HTML5实现的Loading缓冲效果

       HTML5在移动设备上表现,相信已经不用我多说了,干掉了Flash之后,它已经坐上了移动应用程序的第一把交椅。几乎所有稍微高端一点的设备(乔帮主的iPad,iPhone和Andriod的平板手机等)的浏览器都支持HTML5,而且据权威人士测试,这些支持HTML5的设备对Canvas标签的支持也是相当的好。

        大家都知道Web2.0以来,应用程序的实现使用了大量Ajax,而Loading的小图标也有很多,甚至还有专门提供Loading图片的网站,所以我就想能不能让HTML5一并解决这个以前用gif文件才能解决的问题。出乎我意料的是,实现的过程非常简单,只用了不到一小时的时间我就用HTML5实验出了两个Loading效果,而且这样做出来的Loading图标是可定制的,既可以定制颜色,也可以定制大小等属性。

        第一个带着小尾巴转动的loading图标画图的思路是,首先画一个圆,然后在圆的边上按顺序画大小逐渐减小的小圆点,在每次刷新画布时改变这一系列的小圆点在大圆边上的位置。

        这里是案例的演示代码:



  1.   
  2.    
  3.    loading
  4.    
  5.     function loading(canvas,options){
  6.       this.canvas = canvas;
  7.       if(options){
  8.         this.radius = options.radius||12;
  9.         this.circleLineWidth = options.circleLineWidth||4;
  10.         this.circleColor = options.circleColor||'lightgray';
  11.         this.dotColor = options.dotColor||'gray';
  12.       }else{
  13.         this.radius = 12;
  14.         this.circelLineWidth = 4;
  15.         this.circleColor = 'lightgray';
  16.         this.dotColor = 'gray';
  17.       }
  18.     }
  19.     loading.prototype = {
  20.       show:function (){
  21.         var canvas = this.canvas;
  22.         if(!canvas.getContext)return;
  23.         if(canvas.__loading)return;
  24.         canvas.__loading = this;
  25.         var ctx = canvas.getContext('2d');
  26.         var radius = this.radius;
  27.         var rotators = [{angle:0,radius:1.5},{angle:3/radius,radius:2},{angle:7/radius,radius:2.5},{angle:12/radius,radius:3}];
  28.         var me = this;
  29.         canvas.loadingInterval = setInterval(function(){
  30.           ctx.clearRect(0,0,canvas.width,canvas.height);
  31.           var lineWidth = me.circleLineWidth;
  32.           var center = {x:canvas.width/2 - radius,y:canvas.height/2-radius};
  33.           ctx.beginPath();
  34.           ctx.lineWidth = lineWidth;
  35.           ctx.strokeStyle = me.circleColor;
  36.           ctx.arc(center.x,center.y,radius,0,Math.PI*2);
  37.           ctx.closePath();
  38.           ctx.stroke();
  39.           for(var i=0;i
  40.             var rotatorAngle = rotators[i].currentAngle||rotators[i].angle;
  41.             //在圆圈上面画小圆
  42.             var rotatorCenter = {x:center.x-(radius)*Math.cos(rotatorAngle) ,y:center.y-(radius)*Math.sin(rotatorAngle)};
  43.             var rotatorRadius = rotators[i].radius;
  44.             ctx.beginPath();
  45.             ctx.fillStyle = me.dotColor;
  46.             ctx.arc(rotatorCenter.x,rotatorCenter.y,rotatorRadius,0,Math.PI*2);
  47.             ctx.closePath();
  48.             ctx.fill();
  49.             rotators[i].currentAngle = rotatorAngle+4/radius;
  50.           }
  51.         },50);
  52.       },
  53.       hide:function(){
  54.         var canvas = this.canvas;
  55.         canvas.__loading = false;
  56.         if(canvas.loadingInterval){
  57.           window.clearInterval(canvas.loadingInterval);
  58.         }
  59.         var ctx = canvas.getContext('2d');
  60.         if(ctx)ctx.clearRect(0,0,canvas.width,canvas.height);
  61.       }
  62.     };
  63.    
  64.   
  65.   
  66.    
  67.    


  68.    
  69.    

  70.    


  71.     <script><br> </script>
  72.     var loadingObj = new loading(document.getElementById('canvas'),{radius:8,circleLineWidth:3});
  73.     loadingObj.show();
  74.    
  75.   
复制代码


        演示地址:http://f200-8.bbs.hexun.com/e/111219/loading.htm

        第二个较为简单,在一个圆环上有一个相同圆心相同半径的圆弧在不停的转动。画图的步骤是首先画一个圆环,然后画一个不同颜色相同圆心半径的圆弧,在每次刷新画布时改变圆弧的起始角度。

        这里是案例的演示代码:




  1.   
  2.   loading
  3.   <script><br> </script>
  4.    /*
  5.     html5 loading 鎺т欢
  6.     浣滆€咃細鐜夊紑 鍗氬
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何將音頻添加到我的HTML5網站上?如何將音頻添加到我的HTML5網站上?Mar 10, 2025 pm 03:01 PM

本文解釋瞭如何使用&lt; audio&gt;元素,包括用於格式選擇的最佳實踐(MP3,OGG Vorbis),文件優化和JavaScript控件用於播放。 它強調使用多個音頻f

如何使用HTML5頁面可見性API檢測頁面何時可見?如何使用HTML5頁面可見性API檢測頁面何時可見?Mar 13, 2025 pm 07:51 PM

本文討論了使用HTML5頁面可見性API來檢測頁面可見性,提高用戶體驗並優化資源使用情況。關鍵方麵包括暫停媒體,減少CPU負載以及基於可見性變化管理分析。

如何使用視口元標記來控制移動設備上的頁面縮放?如何使用視口元標記來控制移動設備上的頁面縮放?Mar 13, 2025 pm 08:00 PM

本文討論了使用視口元標記來控制移動設備上的頁面縮放,重點是寬度和初始尺度之類的設置,以獲得最佳響應和性能。

如何將HTML5表單用於用戶輸入?如何將HTML5表單用於用戶輸入?Mar 10, 2025 pm 02:59 PM

本文解釋瞭如何創建和驗證HTML5表格。 它詳細介紹了&gt;元素,輸入類型(文本,電子郵件,編號等)和屬性(必需,模式,最小,最大)。 HTML5的優勢比舊方法形成

如何使用地理位置API處理用戶位置隱私和權限?如何使用地理位置API處理用戶位置隱私和權限?Mar 18, 2025 pm 02:16 PM

本文討論了使用GeOlocation API管理用戶位置隱私和權限,並強調要求權限,確保數據安全性並遵守隱私法律的最佳實踐。

如何使用HTML5和JavaScript創建互動遊戲?如何使用HTML5和JavaScript創建互動遊戲?Mar 10, 2025 pm 06:34 PM

本文使用JavaScript詳細介紹了創建Interactive HTML5遊戲。 它涵蓋了遊戲設計,HTML結構,CSS樣式,JavaScript邏輯(包括事件處理和動畫)以及音頻集成。 必需的JavaScript庫(Phaser,Pi

如何將HTML5拖放API用於交互式用戶界面?如何將HTML5拖放API用於交互式用戶界面?Mar 18, 2025 pm 02:17 PM

本文介紹瞭如何使用HTML5拖放API來創建交互式用戶界面,詳細介紹了使元素可拖動的步驟,處理關鍵事件並通過自定義反饋來增強用戶體驗。它還討論了一個常見的陷阱

如何使用HTML5 Websockets API進行客戶端和服務器之間的雙向通信?如何使用HTML5 Websockets API進行客戶端和服務器之間的雙向通信?Mar 12, 2025 pm 03:20 PM

本文解釋了HTML5 Websockets API,用於實時雙向客戶服務器通信。 它詳細詳細介紹了客戶端(JavaScript)和服務器端(Python/Flask)的實現,以應對可伸縮性,狀態管理,一個挑戰

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境