HTML5实现的Loading缓冲效果
HTML5在移动设备上表现,相信已经不用我多说了,干掉了Flash之后,它已经坐上了移动应用程序的第一把交椅。几乎所有稍微高端一点的设备(乔帮主的iPad,iPhone和Andriod的平板手机等)的浏览器都支持HTML5,而且据权威人士测试,这些支持HTML5的设备对Canvas标签的支持也是相当的好。
大家都知道Web2.0以来,应用程序的实现使用了大量Ajax,而Loading的小图标也有很多,甚至还有专门提供Loading图片的网站,所以我就想能不能让HTML5一并解决这个以前用gif文件才能解决的问题。出乎我意料的是,实现的过程非常简单,只用了不到一小时的时间我就用HTML5实验出了两个Loading效果,而且这样做出来的Loading图标是可定制的,既可以定制颜色,也可以定制大小等属性。
第一个带着小尾巴转动的loading图标画图的思路是,首先画一个圆,然后在圆的边上按顺序画大小逐渐减小的小圆点,在每次刷新画布时改变这一系列的小圆点在大圆边上的位置。
这里是案例的演示代码:
-
-
-
-
-
loading
- function loading(canvas,options){
- this.canvas = canvas;
- if(options){
- this.radius = options.radius||12;
- this.circleLineWidth = options.circleLineWidth||4;
- this.circleColor = options.circleColor||'lightgray';
- this.dotColor = options.dotColor||'gray';
- }else{
- this.radius = 12;
- this.circelLineWidth = 4;
- this.circleColor = 'lightgray';
- this.dotColor = 'gray';
- }
- }
- loading.prototype = {
- show:function (){
- var canvas = this.canvas;
- if(!canvas.getContext)return;
- if(canvas.__loading)return;
- canvas.__loading = this;
- var ctx = canvas.getContext('2d');
- var radius = this.radius;
- var rotators = [{angle:0,radius:1.5},{angle:3/radius,radius:2},{angle:7/radius,radius:2.5},{angle:12/radius,radius:3}];
- var me = this;
- canvas.loadingInterval = setInterval(function(){
- ctx.clearRect(0,0,canvas.width,canvas.height);
- var lineWidth = me.circleLineWidth;
- var center = {x:canvas.width/2 - radius,y:canvas.height/2-radius};
- ctx.beginPath();
- ctx.lineWidth = lineWidth;
- ctx.strokeStyle = me.circleColor;
- ctx.arc(center.x,center.y,radius,0,Math.PI*2);
- ctx.closePath();
- ctx.stroke();
- for(var i=0;i
- var rotatorAngle = rotators[i].currentAngle||rotators[i].angle;
- //在圆圈上面画小圆
- var rotatorCenter = {x:center.x-(radius)*Math.cos(rotatorAngle) ,y:center.y-(radius)*Math.sin(rotatorAngle)};
- var rotatorRadius = rotators[i].radius;
- ctx.beginPath();
- ctx.fillStyle = me.dotColor;
- ctx.arc(rotatorCenter.x,rotatorCenter.y,rotatorRadius,0,Math.PI*2);
- ctx.closePath();
- ctx.fill();
- rotators[i].currentAngle = rotatorAngle+4/radius;
- }
- },50);
- },
- hide:function(){
- var canvas = this.canvas;
- canvas.__loading = false;
- if(canvas.loadingInterval){
- window.clearInterval(canvas.loadingInterval);
- }
- var ctx = canvas.getContext('2d');
- if(ctx)ctx.clearRect(0,0,canvas.width,canvas.height);
- }
- };
-
-
-
-
-
-
-
-
-
- <script><br> </script>
- var loadingObj = new loading(document.getElementById('canvas'),{radius:8,circleLineWidth:3});
- loadingObj.show();
-
-
演示地址:http://f200-8.bbs.hexun.com/e/111219/loading.htm
第二个较为简单,在一个圆环上有一个相同圆心相同半径的圆弧在不停的转动。画图的步骤是首先画一个圆环,然后画一个不同颜色相同圆心半径的圆弧,在每次刷新画布时改变圆弧的起始角度。
这里是案例的演示代码:
-
-
-
-
-
loading
- <script><br> </script>
- /*
- html5 loading 鎺т欢
- 浣滆€咃細鐜夊紑 鍗氬

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文讨论了使用视口元标记来控制移动设备上的页面缩放,重点是宽度和初始尺度之类的设置,以获得最佳响应和性能。

本文使用JavaScript详细介绍了创建Interactive HTML5游戏。 它涵盖了游戏设计,HTML结构,CSS样式,JavaScript逻辑(包括事件处理和动画)以及音频集成。 必需的JavaScript库(Phaser,Pi

本文解释了如何使用&lt; audio&gt;元素,包括用于格式选择的最佳实践(MP3,OGG Vorbis),文件优化和JavaScript控件用于播放。 它强调使用多个音频f

本文讨论了使用HTML5页面可见性API来检测页面可见性,提高用户体验并优化资源使用情况。关键方面包括暂停媒体,减少CPU负载以及基于可见性变化管理分析。

本文讨论了使用GeOlocation API管理用户位置隐私和权限,并强调要求权限,确保数据安全性并遵守隐私法律的最佳实践。

本文解释了如何创建和验证HTML5表格。 它详细介绍了&gt;元素,输入类型(文本,电子邮件,编号等)和属性(必需,模式,最小,最大)。 HTML5的优势比旧方法形成

本文介绍了如何使用HTML5拖放API来创建交互式用户界面,详细介绍了使元素可拖动的步骤,处理关键事件并通过自定义反馈来增强用户体验。它还讨论了一个常见的陷阱

本文解释了HTML5 Websockets API,用于实时双向客户服务器通信。 它详细详细介绍了客户端(JavaScript)和服务器端(Python/Flask)的实现,以应对可伸缩性,状态管理,一个挑战
