之前做了一个三个圆形叠加在一起的加载,用的是定位和cile来操作,但是加载的头部不能是圆形。后来用canvas做了一个,但是这个加载的进度不好调整,原理很简单,就是让一个圆,按照圆形轨迹进行运动就可以了,也不需要擦除运动轨迹,就像是进度加载一样。不多说,直接上代码:

结构很简单:一个canvas就搞定

<canvas id="c1" width="200" height="200">
  <span>您的浏览器版本过低了,不支持canvas</span>
</canvas>

主要是样式,样式用的很简单,也很复杂,简单就是看的清楚,复杂是没有复用,代码写的过多了

<style>
  body{text-align: center;}
  canvas{background: #fff;}
  span{color: #fff;font-size: 50px;}
</style>

<script>
function d2a(n){
return n*Math.PI/180;
}
window.onload=function(){
var oC=document.getElementById('c1');
var gd=oC.getContext('2d'); //画笔

gd.lineWidth=20;
var angle = 0.01;

function draw(){
//最内
gd.beginPath();
gd.fillStyle='red';
gd.strokeStyle="#5a7a7c";

gd.arc(100,100,50,d2a(0),d2a(360),false);
gd.stroke();

/*gd.beginPath();
gd.strokeStyle="#0ad5e2";
gd.arc(100,100,50,d2a(-90),d2a(-80),false);
gd.stroke();*/

setInterval(function(){
var x=100;
var y=100;
angle += 0.03;
var s = Math.sin(angle);
var c = -Math.cos(angle);
gd.beginPath();
gd.fillStyle="#0ad5e2";
gd.arc(x+(s*50),y+(c*50),10,0,2*Math.PI,false);
gd.fill();
},300)

//中间
gd.beginPath();
gd.strokeStyle="#d78f0b";
gd.arc(100,100,70,d2a(0),d2a(360),false);
gd.stroke();

/*gd.beginPath();
gd.strokeStyle="#ffff00";
gd.arc(100,100,70,d2a(-90),d2a(-80),false);
gd.stroke();*/
setInterval(function(){
var x=100;
var y=100;
angle += 0.01;
var s = Math.sin(angle);
var c = -Math.cos(angle);
gd.beginPath();
gd.fillStyle="#ffff00";
gd.arc(x+(s*70),y+(c*70),10,0,2*Math.PI,false);
gd.fill();
},300)
//最外
gd.beginPath();
gd.strokeStyle="#530a6e";
gd.arc(100,100,90,d2a(0),d2a(360),false);
gd.stroke();

/*gd.beginPath();
gd.strokeStyle="#8304ff";

gd.arc(100,100,90,d2a(-90),d2a(-180),6*Math.PI);
gd.stroke();*/
setInterval(function(){
var x=100;
var y=100;
angle += 0.01;
var s = Math.sin(angle);
var c = -Math.cos(angle);
gd.beginPath();
gd.fillStyle="#8304ff";
gd.arc(x+(s*90),y+(c*90),10,0,2*Math.PI,false);
gd.fill();
console.log(x+(s*90));
},300)

//小圆点
gd.beginPath();
gd.fillStyle="#fff";
gd.arc(77,55,5,0,2*Math.PI,false);
gd.fill();
};
draw();
};

代码上完,有兴趣的可以复制到编译器上,自己运行下效果,如果有什么问题可以留言交流。

最新文章

  1. redis成长之路——(三)
  2. u盘安装ubuntu
  3. Git学习记录
  4. 使用multimap创建重复键关联容器
  5. sound tips
  6. spring data mongodb中,如果对象中的属性不想加入到数据库字段中
  7. 无聊时,可以去HASKELL里找点感觉
  8. xml跟sql查找
  9. day38(增强类的实现)
  10. (转)Java开发中的23种设计模式详解
  11. JavaScript中的事件模型
  12. 解决Setting property &#39;source&#39; to &#39;org.eclipse.jst.jee.server的问题
  13. android采用SurfaceView实现文字滚动效果
  14. 网络协议 16 - DNS 协议:网络世界的地址簿
  15. 机器学习之隐马尔科夫模型HMM(六)
  16. UVA1533-Moving Pegs(BFS+状态压缩)
  17. [PC]可用于Windows Server 2008 R2的Xbox One手柄、接收器驱动
  18. 微软必应词典UWP -2017春
  19. [转]HTTPS网络流量解密方法探索系列(一)
  20. vim打造开发IDE

热门文章

  1. Python+OpenCV图像处理(一)
  2. 浅谈javascript继承体系
  3. Linux入门(7)——Ubuntu16.04安装wps并解决系统缺失字体问题
  4. kafka 的 createDirectStream
  5. nvm进行node多版本管理
  6. IE10和IE11中滑动条遮挡页面问题
  7. Linux系列教程(十一)——Linux软件包管理之RPM命令
  8. 如何在Pypi上发表自己的Python库
  9. VS2008 C++ 利用WinHttp API获取任意Http网址的源码
  10. Special Fish