canvas三环加载进度条
之前做了一个三个圆形叠加在一起的加载,用的是定位和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();
};
代码上完,有兴趣的可以复制到编译器上,自己运行下效果,如果有什么问题可以留言交流。
canvas三环加载进度条的更多相关文章
- Unity3D 场景切换加载进度条实现
需要三个场景,场景A,场景B,场景C: 场景A:一个按钮,点击加载场景B: 场景B:从A切换到C过度场景,加载进度条: 场景C:目标场景: 创建OnProgress.cs脚本: using Syste ...
- css3 linear-gradient实现页面加载进度条效果
最终效果图: html结构: <div> <p class="p1"> <span></span> < ...
- ajax页面加载进度条插件
下面两个都是youtube视频的加载进度条效果的ajax插件 一.官网:http://ricostacruz.com/nprogress/官网 github:https://github.com/rs ...
- pace.js – 加载进度条插件
这儿只是简单介绍一下这个插件pace.js. 在页面中引入Pace.js,页面就会自动监测你的请求(包括Ajax请求),在事件循环滞后,会在页面记录加载的状态以及进度情况.此插件的兼容性很好,可以兼容 ...
- 仿UC浏览器图片加载进度条
前几天用UC浏览器看新闻(无意中给UC打了广告),看到它的图片加载进度条,正好最近有时间,所以就自己写了一个. 效果图如下 进度条的底色和填充颜色都可以调整. 首先中间的笑脸作为一个整体,其实现代码如 ...
- 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画
之前向大家介绍8款优秀的 jQuery 加载动画和进度条插件,今天这篇文章向大家推荐10个纯 CSS3 代码实现精美加载进度条动画效果的方案.加载动画和进度条在网站和 Web 应用中的使用非常流行,特 ...
- jQuery模拟页面加载进度条
因为我们无法通过任何方法获取整个页面的大小和当前加载了多少,所以想制作一个加载进度条的唯一办法就是模拟.那要怎么模拟呢? 我们知道,页面是从上往下执行的,也就是说我们可以大致估算出在页面的某个位置加载 ...
- js页面加载进度条
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iOS UIWebView 加载进度条的使用-WKWebView的使用,更新2017.6.26
1.由于项目中加载网络插件,直接使用了webview加载.使用了三方NJKWebViewProgress进度条的使用,近期在测试时发现,网络缓慢时出现白屏,有卡顿现象. 于是采用了WKWebView进 ...
随机推荐
- 【转载】小tips: PC端传统网页试试使用Zepto.js进行开发
Zepto.js设计之初专为移动端,不对一些古董浏览器支持.所以,尺寸很小,压缩后20K多一点,但是,jQuery压缩后,3.*版本要80多K,1.*版本则要90多K,4倍差距. 由于每个页面都会使用 ...
- migo的增强
migo的增强 所用BADI:MB_MIGO_BADI 具体见例子:(SE19) CIN_PLUG_IN_TO_MIGO JVA_CRP_MIGO_BADI JV_CRP_MIGO_BADI WB ...
- ASP.NET MVC 学习笔记 1
1. 什么是ASP.Net MVC ASP.Net MVC是一种开发Web应用程序的工具(is a web application development framework),采用Model-Vie ...
- shell编程/字库裁剪(2)——编程过程
版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7704085.html 作者:窗户 Q ...
- LeetCode 229. Majority Element II (众数之二)
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
- Android Studio常见问题解决
1.Error:Execution failed for task ':XXXX:processDebugManifest'. > Manifest merger failed with mul ...
- 找到python官方标准库文档
python中有很多标准库.我们没法记住全部标准库,但是可以在:https://docs.python.org/3/py-modindex.html 中查看标准库的索引 在python的官方文档中,如 ...
- 微信小程序支付
@Controllerpublic class UserPayToMerchantController { public static final String appid="******* ...
- 一个强大的封装好的pdo处理类
php5.5后就不支持mysql扩展了,也就是说这以后都不能使用msyql_conncet之类的函数了.不过没有关系,pdo比mysql有更多优势,写法也很简单,下面贴出一个来自互联网的pdo处理类. ...
- Leetcode题解(六)
21.Merge Two Sorted Lists 题目 直接上代码: class Solution { public: ListNode *mergeTwoLists(ListNode *l1, L ...