上一篇讲到用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动画的更多相关文章

  1. 用svg制作loading动画

    首先说明:由于各浏览器对svg动画事件支持不统一,此loading动画在Firefox,Opera,Chrome中均没有问题,IE和Safari中有问题,可能是不支持SIML写动画的语法, 但是用Ca ...

  2. canvas制作简单动画

    在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...

  3. 使用Canvas制作时钟动画

    复习Javascript到Canvas的知识点,看到一个使用Canvas绘制的静态时钟例子,便想将其变成动态显示系统时间的时钟动画.另外再配上数字显示的时钟,一个小的时钟模块的诞生了!目前的界面还比较 ...

  4. 利用HTML5的canvas制作万花筒动画特效

    <!DOCTYPE HTML> <html> <head> <style> #canvas{ background-color:#cccccc; } & ...

  5. 分享web前端七款HTML5 Loading动画特效集锦

    以前我们大部分的Loading动画都是利用gif图片实现的,这种图片实现Loading动画的方法虽然也很不错,但是作为HTML5开发者来说,如果能利用HTML5和CSS3实现这些超酷的Loading动 ...

  6. 7 款华丽的 HTML5 Loading 动画特效

    我们在进行大数据的传输或者复杂操作的等待时,最好能有一个Loading等待的小动画提示用户.本文将为大家分享一些超华丽的基于HTML5的Loading加载动画特效,希望你会喜欢. 1.HTML5 Ca ...

  7. Canvas制作的下雨动画

    简介 在codepen上看到一个Canvas做的下雨效果动画,感觉蛮有意思的.就研究了下,这里来分享下,实现技巧.效果可以见下面的链接. 霓虹雨: http://codepen.io/natewile ...

  8. 超酷!!HTML5 Canvas 水流样式 Loading 动画

    今天我们要分享另外一款基于HTML5 Canvas的液体流动样式Loading加载动画,这款Loading动画在加载时会呈现液体流动的动画效果,并且由于和背景颜色的对比,也略微呈现发光的动画效果. 效 ...

  9. 一款炫酷Loading动画--载入成功

    简单介绍 昨天在简书上看到一篇文章.介绍了一个载入动画的实现过程 一款Loading动画的实现思路(一) 仅仅可惜原动画是IOS上制作的.而看了一下.作者的实现思路比較复杂,于是趁着空暇写了一个And ...

随机推荐

  1. Elasticsearch Network Settings

    网络设置 Elasticsearch 缺省情况下是绑定 localhost.对于本地开发服务是足够的(如果你在相同机子上启动多个节点,它还可以形成一个集群),但是你需要配置基本的网络设置,为了能够在实 ...

  2. 20160405互联网新闻<来自涛涛大产品>

    1.滴滴或将收购腾讯地图,打造“滴滴地图”(滴滴与神州.uber之间的争斗,归根到底还是BAT的代理人之战)2.优信二手车否认合并传言 并谴责58同城仿冒优信网站(商战无所不用其极)3.京东旗下的拍拍 ...

  3. HSV与RGB颜色空间的转换

    一.本质上,H的取值范围:0~360   S的取值范围:0~1    V的取值范围:0~255                                     但是,当图像为32F型的时候,各 ...

  4. Hadoop集群搭建安装过程(一)(图文详解---尽情点击!!!)

    Hadoop集群搭建(一)(上篇中讲到了Linux虚拟机的安装) 一.安装所需插件(以hadoop2.6.4为例,如果需要可以到官方网站进行下载:http://hadoop.apache.org) h ...

  5. 第七章:LED将为我闪烁:控制发光二极管

        在之前章节了解到Linux驱动程序可以控制软硬件,可以实现软硬件之间的交互.在这章我们学习LED驱动的实现原理.Linux内核提供了多个与I/O内存交互的函数可以实现控制硬件.    编写LE ...

  6. Dos学习笔记(2)dos屏幕内容的复制

    方法1,选择复制,右键dos屏幕=>标记=>然后选择开始复制的地方,拖动覆盖要复制的内容,好了之后,按回车键(Enter). 方法2,全部复制,右键dos屏幕=>全选=>然后回 ...

  7. flume 不报错但是不能正常使用

    flume-ng agent --conf ./conf/ --conf-file ./conf/test1.conf --name a1 -Dflume.root.logger=INFO,conso ...

  8. 【Django】Django web项目部署(Nginx+uwsgi)

    一.安装uwsgi 通过pip安装uwsgi. pip install uwsgi 测试uwsgi,创建test.py文件: def application(env, start_response): ...

  9. tomcat7 启动项目报错 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()

    JDK版本:jdk1.8.0_77 Tomcat 版本:apache-tomcat-7.0.47 异常重现步骤: 1.完成项目部署 2.启动Tomcat 异常头部信息:java.lang.NoSuch ...

  10. 关于是用dotnet获取本机IP地址+计算机名的方法

    印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...