用Canvas制作loading动画
上一篇讲到用SVG制作loading动画,其中提到了线性渐变在扇形区域中的问题,并且用SVG SIML语法制作的loading动画并不是所有浏览器都兼容,所以现在用Canvas重新实现了一遍。
这里与SVG不同的是Canvas的动画只能以脚本的方式进行,大家在用的时候稍微考虑一下性能问题,不过此版本基本如果浏览器版本不是太低的话应该都是兼容的,IE需要IE9以上的版本。
这里的渐变不如SVG那么好原因就是上一讲所提,不过还可以接受,也没什么大的问题。
上代码:
图片资源:
样式代码:
.loadingcanvas-out
{width:70px;height:70px;margin:0 auto;position:absolute;left:50%;margin-left:-35px;top:55%;}
#loading-canvas
{border:0;position:relative;}
HTML:
<div class="loadingcanvas-out">
<canvas id="loading-canvas"></canvas>
<img src="../images/gototop1.png" alt="加载中" style='position:absolute;top:0px;left:0px;z-index:99;width:70px;height:70px;' />
</div>
脚本:
var canvas = document.getElementById("loading-canvas"), index = 0;
var canvas = document.getElementById("loading-canvas"), index = 0;
function DrawSector(canvas_tag, start_angle, angle, radius, anticlockwise) {
var centerPoint = { x: 35, y: 35 };
start_angle = start_angle || 0;
if (canvas_tag.getContext) {
ctx = canvas_tag.getContext("2d");
ctx.translate(35, 35);
setInterval(
function() {
ctx.fillStyle = "White";
ctx.fill();
var g1 = ctx.createLinearGradient(0, 70, 60, 10);
g1.addColorStop(0, 'rgba(17,143,44,1)');
g1.addColorStop(0.5, 'rgba(137,215,1,0.4)');
g1.addColorStop(1, 'rgba(255,255,255,0.3)');
ctx.fillStyle = g1;
if (index >= 360) {
index = 0;
}
ctx.beginPath();
ctx.arc(0, 0, 33.9, 0, Math.PI / 180 * 150, false);
//画出结束半径
ctx.lineTo(0, 0);
ctx.closePath();
ctx.fill();
ctx.rotate(5 * Math.PI / 180);
index++;
}, 10);
} else {
alert('You need Safari or Firefox 1.5+ to see this demo.');
}
}
//画一个起始角度为0度,结束角度为150度,绘图方向顺时针的填充扇形
DrawSector(canvas, 0, Math.PI / 180 * 150, 35, false);
最终效果:
用Canvas制作loading动画的更多相关文章
- 用svg制作loading动画
首先说明:由于各浏览器对svg动画事件支持不统一,此loading动画在Firefox,Opera,Chrome中均没有问题,IE和Safari中有问题,可能是不支持SIML写动画的语法, 但是用Ca ...
- canvas制作简单动画
在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...
- 使用Canvas制作时钟动画
复习Javascript到Canvas的知识点,看到一个使用Canvas绘制的静态时钟例子,便想将其变成动态显示系统时间的时钟动画.另外再配上数字显示的时钟,一个小的时钟模块的诞生了!目前的界面还比较 ...
- 利用HTML5的canvas制作万花筒动画特效
<!DOCTYPE HTML> <html> <head> <style> #canvas{ background-color:#cccccc; } & ...
- 分享web前端七款HTML5 Loading动画特效集锦
以前我们大部分的Loading动画都是利用gif图片实现的,这种图片实现Loading动画的方法虽然也很不错,但是作为HTML5开发者来说,如果能利用HTML5和CSS3实现这些超酷的Loading动 ...
- 7 款华丽的 HTML5 Loading 动画特效
我们在进行大数据的传输或者复杂操作的等待时,最好能有一个Loading等待的小动画提示用户.本文将为大家分享一些超华丽的基于HTML5的Loading加载动画特效,希望你会喜欢. 1.HTML5 Ca ...
- Canvas制作的下雨动画
简介 在codepen上看到一个Canvas做的下雨效果动画,感觉蛮有意思的.就研究了下,这里来分享下,实现技巧.效果可以见下面的链接. 霓虹雨: http://codepen.io/natewile ...
- 超酷!!HTML5 Canvas 水流样式 Loading 动画
今天我们要分享另外一款基于HTML5 Canvas的液体流动样式Loading加载动画,这款Loading动画在加载时会呈现液体流动的动画效果,并且由于和背景颜色的对比,也略微呈现发光的动画效果. 效 ...
- 一款炫酷Loading动画--载入成功
简单介绍 昨天在简书上看到一篇文章.介绍了一个载入动画的实现过程 一款Loading动画的实现思路(一) 仅仅可惜原动画是IOS上制作的.而看了一下.作者的实现思路比較复杂,于是趁着空暇写了一个And ...
随机推荐
- hibernate一级缓存
理解 Hibernate 一级缓存 Hibernate 一级缓存默认是打开,不需要任何的配置.实际上,你无法强制禁止它的使用. 如果你理解了一级缓存实际上和会话是关联的,就很容易理解一级缓存.总所周知 ...
- Sep14学习笔记_pipe() & fork()
第一次用博客园,昨晚编辑器一直没打开,今天打开了,把昨天的内容先补一下 关于parent和child之间的数据传输: If the parent wants to receive data from ...
- RSA不限长度非对称加密解密C#
RSA 分段加解密[解决“不正确的长度”的异常] RSA 是常用的非对称加密算法.最近使用时却出现了“不正确的长度”的异常,研究发现是由于待加密的数据超长所致. .NET Framework 中提供的 ...
- Javascript中的数组方法总结
1.concat():将两个或多个数组合并成一个数组 arrayObject.concat(arrayX,arrayX,......,arrayX),返回一个新的数据,arrayX可以是数值也可以是数 ...
- jstl 标签库的使用
JSTL 核心标签库 使用 JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.ot ...
- 【WEB前端】CSS继承性和层叠性(极度重要)
1.1 继承性 有一些属性,当给自己设置的时候,自己的后代都继承上了,这个就是继承性. 哪些属性能继承? color. text-开头的.line-开头的.font-开头的. 这些关于文字样式的,都能 ...
- 从txt文件中读取数据放在二维数组中
1.我D盘中的test.txt文件内的内容是这样的,也是随机产生的二维数组 /test.txt/ 5.440000 3.4500006.610000 6.0400008.900000 3.030000 ...
- c++句柄设计
句柄,也称为智能指针. 我计算了一下我的时间,以后每14天得读完一本书,才不愧对我买的这么多书.然而我还要抽出时间来谢谢博文.最近读的是c++沉思录,开篇就用了3章来讲述句柄.好了,废话少说,接下来谈 ...
- java代码
io的使用 package com.tan.io; import java.io.*; import java.util.*; class Employee{ private String name; ...
- MAC的终端命令
今天小研究了一下MAC的终端命令,主要为了方便调试程序用,XCODE用不来啊... 在这里记下..防止丢失 pwd 当前工作目录 cd(不加参数) 进root cd(folder) 进入文件夹 cd ...