HTML5有特色的进度条

查看效果:http://keleyi.com/keleyi/phtml/html5/26.htm

完整代码如下:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4 <meta charset=‘UTF-8‘>
  5 <title>HTML5有特色的进度条-柯乐义</title>
  6 <base target="_blank" />
  7 <style>
  8 body {
  9 background: #111;
 10 color:White;
 11 }
 12 a{color:White;}
 13 canvas {
 14 background: #111;
 15 border: 1px solid #171717;
 16 display: block;
 17 left: 50%;
 18 margin: -51px 0 0 -201px;
 19 position: absolute;
 20 top: 50%;
 21 }
 22 </style>
 23 </head>
 24 <body>
 25 <script type="text/javascript">
 26 /*==================keleyi.com============================*/
 27 /* Light Loader
 28 /*==================柯乐义================================*/
 29 var lightLoader = function (c, cw, ch) {
 30
 31 var _this = this;
 32 this.c = c;
 33 this.ctx = c.getContext(‘2d‘);
 34 this.cw = cw;
 35 this.ch = ch;
 36
 37 this.loaded = 0;
 38 this.loaderSpeed = .6;
 39 this.loaderHeight = 10;
 40 this.loaderWidth = 310;
 41 this.loader = {
 42 x: (this.cw / 2) - (this.loaderWidth / 2),
 43 y: (this.ch / 2) - (this.loaderHeight / 2)
 44 };
 45 this.particles = [];
 46 this.particleLift = 180;
 47 this.hueStart = 0
 48 this.hueEnd = 120;
 49 this.hue = 0;
 50 this.gravity = .15;
 51 this.particleRate = 4;
 52
 53 /*========================================================*/
 54 /* Initialize
 55 /*========================================================*/
 56 this.init = function () {
 57 this.loop();
 58 };
 59
 60 /*========================================================*/
 61 /* Utility Functions
 62 /*========================================================*/
 63 this.rand = function (rMi, rMa) { return ~ ~((Math.random() * (rMa - rMi + 1)) + rMi); };
 64 this.hitTest = function (x1, y1, w1, h1, x2, y2, w2, h2) { return !(x1 + w1 < x2 || x2 + w2 < x1 || y1 + h1 < y2 || y2 + h2 < y1); };
 65
 66 /*========================================================*/
 67 /* Update Loader
 68 /*========================================================*/
 69 this.updateLoader = function () {
 70 if (this.loaded < 100) {
 71 this.loaded += this.loaderSpeed;
 72 } else {
 73 this.loaded = 0;
 74 }
 75 };
 76
 77 /*========================================================*/
 78 /* Render Loader
 79 /*========================================================*/
 80 this.renderLoader = function () {
 81 this.ctx.fillStyle = ‘#000‘;
 82 this.ctx.fillRect(this.loader.x, this.loader.y, this.loaderWidth, this.loaderHeight);
 83
 84 this.hue = this.hueStart + (this.loaded / 100) * (this.hueEnd - this.hueStart);
 85
 86 var newWidth = (this.loaded / 100) * this.loaderWidth;
 87 this.ctx.fillStyle = ‘hsla(‘ + this.hue + ‘, 100%, 40%, 1)‘;
 88 this.ctx.fillRect(this.loader.x, this.loader.y, newWidth, this.loaderHeight);
 89
 90 this.ctx.fillStyle = ‘#222‘;
 91 this.ctx.fillRect(this.loader.x, this.loader.y, newWidth, this.loaderHeight / 2);
 92 };
 93
 94 /*========================================================*/
 95 /* Particles
 96 /*========================================================*/
 97 this.Particle = function () {
 98 this.x = _this.loader.x + ((_this.loaded / 100) * _this.loaderWidth) - _this.rand(0, 1);
 99 this.y = _this.ch / 2 + _this.rand(0, _this.loaderHeight) - _this.loaderHeight / 2;
100 this.vx = (_this.rand(0, 4) - 2) / 100;
101 this.vy = (_this.rand(0, _this.particleLift) - _this.particleLift * 2) / 100;
102 this.width = _this.rand(1, 4) / 2;
103 this.height = _this.rand(1, 4) / 2;
104 this.hue = _this.hue;
105 };
106
107 this.Particle.prototype.update = function (i) {
108 this.vx += (_this.rand(0, 6) - 3) / 100;
109 this.vy += _this.gravity;
110 this.x += this.vx;
111 this.y += this.vy;
112
113 if (this.y > _this.ch) {
114 _this.particles.splice(i, 1);
115 }
116 };
117
118 this.Particle.prototype.render = function () {
119 _this.ctx.fillStyle = ‘hsla(‘ + this.hue + ‘, 100%, ‘ + _this.rand(50, 70) + ‘%, ‘ + _this.rand(20, 100) / 100 + ‘)‘;
120 _this.ctx.fillRect(this.x, this.y, this.width, this.height);
121 };
122
123 this.createParticles = function () {
124 var i = this.particleRate;
125 while (i--) {
126 this.particles.push(new this.Particle());
127 };
128 };
129
130 this.updateParticles = function () {
131 var i = this.particles.length;
132 while (i--) {
133 var p = this.particles[i];
134 p.update(i);
135 };
136 };
137
138 this.renderParticles = function () {
139 var i = this.particles.length;
140 while (i--) {
141 var p = this.particles[i];
142 p.render();
143 };
144 };
145
146
147 /*========================================================*/
148 /* Clear Canvas
149 /*========================================================*/
150 this.clearCanvas = function () {
151 this.ctx.globalCompositeOperation = ‘source-over‘;
152 this.ctx.clearRect(0, 0, this.cw, this.ch);
153 this.ctx.globalCompositeOperation = ‘lighter‘;
154 };
155
156 /*========================================================*/
157 /* Animation Loop 柯 乐 义
158 /*========================================================*/
159 this.loop = function () {
160 var loopIt = function () {
161 requestAnimationFrame(loopIt, _this.c);
162 _this.clearCanvas();
163
164 _this.createParticles();
165
166 _this.updateLoader();
167 _this.updateParticles();
168
169 _this.renderLoader();
170 _this.renderParticles();
171
172 };
173 loopIt();
174 };
175
176 };
177
178 /*========================================================*/
179 /* Check Canvas Support
180 /*========================================================*/
181 var isCanvasSupported = function () {
182 var elem = document.createElement(‘canvas‘);
183 return !!(elem.getContext && elem.getContext(‘2d‘));
184 };
185
186 /*========================================================*/
187 /* Setup requestAnimationFrame
188 /*========================================================*/
189 var setupRAF = function () {
190 var lastTime = 0;
191 var vendors = [‘ms‘, ‘moz‘, ‘webkit‘, ‘o‘];
192 for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
193 window.requestAnimationFrame = window[vendors[x] + ‘RequestAnimationFrame‘];
194 window.cancelAnimationFrame = window[vendors[x] + ‘CancelAnimationFrame‘] || window[vendors[x] + ‘CancelRequestAnimationFrame‘];
195 };
196
197 if (!window.requestAnimationFrame) {
198 window.requestAnimationFrame = function (callback, element) {
199 var currTime = new Date().getTime();
200 var timeToCall = Math.max(0, 16 - (currTime - lastTime));
201 var id = window.setTimeout(function () { callback(currTime + timeToCall); }, timeToCall);
202 lastTime = currTime + timeToCall;
203 return id;
204 };
205 };
206
207 if (!window.cancelAnimationFrame) {
208 window.cancelAnimationFrame = function (id) {
209 clearTimeout(id);
210 };
211 };
212 };
213
214 /*========================================================*/
215 /* Define Canvas and Initialize
216 /*========================================================*/
217 if (isCanvasSupported) {
218 var c = document.createElement(‘canvas‘);
219 c.width = 400;
220 c.height = 100;
221 var cw = c.width;
222 var ch = c.height;
223 document.body.appendChild(c);
224 var cl = new lightLoader(c, cw, ch);
225
226 setupRAF();
227 cl.init();
228 }
229 </script>
230 <div style="position:absolute; top: 0;width:100%">
231 <div class="footer-banner" style="width:728px;margin:10px auto;color:White">
232 HTML5进度条<br />
233 请使用<a href="http://keleyi.com/a/bjac/g039tue3.htm">支持HTML5的浏览器</a>查看本页 <a href="http://keleyi.com/a/bjad/8lva67xl.htm">原文</a></div>
234 </div>
235
236 </body>
237 </html>

转载自:http://keleyi.com/a/bjad/8lva67xl.htm

web前端资源:http://www.cnblogs.com/jihua/p/webfront.html

时间: 2024-10-12 07:45:45

HTML5有特色的进度条的相关文章

简直要逆天!超炫的 HTML5 粒子效果进度条

我喜欢粒子效果作品,特别是那些能够应用于实际的,例如这个由 Jack Rugile 基于 HTML5 Cavnas 编写的进度条效果.看着这么炫的 Loading 效果,即使让我多等一会也无妨:)你呢? 温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中浏览. 插件下载     效果演示 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[附源码下载] 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 4

HTML5圆形百分比进度条插件circleChart(记录)

介绍:一款可以描绘圆圈进度条的jQuery插件(可用作统计图) circleChart使用方法 在页面中引入jquery和circleChart.min.js文件. <script src="path/to/jquery.min.js"></script> <script src="path/to/circleChart.min.js"></script> HTML结构 使用一个<div>元素作为该圆形百分

HTML5动画(二):Canvas 实现圆形进度条并显示数字百分比

实现效果 1.首先创建html代码 <canvas id="canvas" width="500" height="500" style="background:#000;"></canvas> 2.创建canvas环境 var canvas = document.getElementById('canvas'), //获取canvas元素 context = canvas.getContext('2d

9个绚丽多彩的HTML5进度条动画赏析

进度条在网页应用中越来越广泛了,特别是现在的页面异步局部刷新时代,进度条可以让用户更好的等待操作结果.本文要分享9款绚丽多彩的HTML5进度条动画,有很多还是挺实用的,效果也非常不错. 1.CSS3发光进度条动画 超炫酷的样式 这次我们要来分享一款非常炫酷的CSS3进度条动画,其样式风格类似于星球大战里面的那些激光剑效果.页面初始化时,可以设定进度条的值,但是我们也可以利用其配套的借口来动态改变进度条的值,使用起来比较方便.另外以前介绍过一款CSS3 3D进度条,其风格也类似. 在线演示 源码下

9款极具创意的HTML5/CSS3进度条动画(免积分下载)

尊重原创,原文地址:http://www.cnblogs.com/html5tricks/p/3622918.html 免积分打包下载地址:http://download.csdn.net/detail/yangwei19680827/7352505 今天我们要分享9款极具创意的HTML5/CSS3进度条动画,这些进度条也许可以帮你增强用户交互和提高用户体验,喜欢的朋友就收藏了吧. 1.HTML5/CSS3图片加载进度条 可切换多主题 今天要分享的这款HTML5/CSS3进度条模拟了真实的图片加

基于HT for Web矢量实现HTML5文件上传进度条

在HTML中,在文件上传的过程中,很多情况都是没有任何的提示,这在体验上很不好,用户都不知道到时有没有在上传.上传成功了没有,所以今天给大家介绍的内容是通过HT for Web矢量来实现HTML5文件上传进度条,矢量在<矢量Chart图表嵌入HTML5网络拓扑图的应用>一文中已经讲述了关于setCompType()方法的应用,今天我们用setImage()方法充分利用系统中定义好的矢量资源来实现文件上传进度条,我们先来看下效果图: 从效果图可以看到,向服务器上传了一个mp4文件,并在最下方显示

HTML5简单进度条插件

今天学习了HTML5画线条,于是有了做一个简单进度条的插件的想法 先来一个实例 下面是html代码 <div> <canvas id="canvas"></canvas> </div> 然后js配置参数 var setting = { id: "canvas",//画布id 不可省略 width: 40,//进度条高度 可省略 time: 100,//进度刷新时间间隔 可省略 默认为1000毫秒 color: &quo

【JavaScript】HTML5/CSS3实现五彩进度条应用

今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS中的进度值,让进度条实时动起来.具体效果大家可以看演示. 你也可以在这里查看在线演示 接下来我们来分析一下这款进度条的源代码以及实现思路,代码主要由HTML和CSS组成,如果你需要动态改变进度值,也可以自己添加Javascript代码,也是比较简单的. HTML代码: <section class=

HTML5 + AJAX ( jQuery版本 ) 文件上传带进度条

页面技术:HTML5 + AJAX ( jQuery) 后台技术:Servlet 3.0 jQuery版本:1.9.1 后台Servlet代码这里就省略了,使用的是 AJAX请求遭遇未登录和Session失效的解决方案 这篇文章里面的后台Servlet.所以这里只看前台的JS代码. 首先HTML5用AJAX提交数据先要学习一个HTML5新增加的对象:FormData  FormData 对象可以使用append 方法进行 key - value的数据添加,与以前我们常用的json不同的就是可以异