HTML5如何实现缓冲效果

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

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

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

这里是案例的演示代码:

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

     

  70.      
  71.      
  72.  
  73.     

     

  74.      
  75.    
  76.  

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

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

这里是案例的演示代码:

 
 
 
  1.  
  2.  
  3.  
  4.    
  5.   loading 
  6.    
  7.    
  8.    
  9.     您的浏览器不支持html5哟 
  10.     

     

  11.      
  12.      
  13.     

     
  14.      
  15.    
  16.  

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

目前从移动设备对HTML5的支持来看,HTML5将来必定大有可为。

天下大势,合久必分,分久必和。PC开发时Web应用在很大程度上统一了客户端程序;而现在移动开发使用不同的系统不同的语言,将来大多数应用必然会统一到一种语言,这种语言必然是html5加Javascript。

注意:由于目前支持HTML5的浏览器还不是很多,请各位在查看演示案例的时候使用Firefox10或者Oprea11等高版本浏览器。

原文地址:http://www.52maomao.info/html5-loading.html

网页题目:HTML5如何实现缓冲效果
新闻来源:http://www.shufengxianlan.com/qtweb/news21/350771.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联