1.1 RotatingCircle 介紹
Cavas影片組件RotatingCircle是一個能夠自定義顏色、半徑、排序方式的圓形組件,具有2D影片效果,可以單獨使用也可以與echarts結合,組件由五個圓形圖組成,每個部分是獨立的引數控制,可以自定義圖形寬度、長度、顏色以及半徑等,
1.1.1 示例
控制元件獨立使用:

echarts組合使用:

1.1.2 代碼示例
(1)創建html檔案,引入js檔案
<script src="js/fatterRotating.mini.js"></script>
(2)指定cavas元素在頁面中的位置
<canvas id="canvasData" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
(3)定義全域變數,用于第(5)步影片操作
var circle ;
(4)初始化RotatingCircle組件,設定組件引數
var canvas = document.getElementById("canvasData");
var txtOpts={
//文字樣式
};
var opts = [{
//影片圖形樣式
}];
circle = RotatingCircle(canvas,opts,txtOpts);
circle.init();
circle.chageTxt("80%");
//動起來
refer();
(5)執行影片特效
為了減小性能消耗,所有的影片都在一個定時器內進行,如果有其他組件影片統一放入refer中,通過window.requestAnimationFrame(callback)函式進行重復呼叫, 回呼函式執行次數通常是每秒60次,但在大多數遵循W3C建議的瀏覽器中,回呼函式執行次數通常與瀏覽器螢屏重繪次數相匹配,
//統一的影片入口
function refer(){
window.requestAnimationFrame(function(){
circle.createCircle();
refer();
});
}
示例代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Cavas影片組件RotatingCircle</title>
</head>
<body>
<canvas id="canvasData" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<script src="js/fatterRotating.js"></script>
<script>
var circle ;
function init(){
//第一個圓圈
var canvas = document.getElementById("canvasData");
var txtOpts={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts = [{
radius: 51,//半徑,內圓動態線,
lineWidth: 10 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 50,//內圓線半徑,靜態的
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 53,//內刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 80,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:18, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle = RotatingCircle(canvas,opts,txtOpts);
circle.init();
circle.chageTxt("80%");
?
//動起來
refer();
}
?
//統一的影片入口
function refer(){
window.requestAnimationFrame(function(){
circle.createCircle();
refer();
});
}
?
init();
?
?
</script>
</body>
</html>
1.1.3 引數說明
組件由五個圓形圖組成,每個部分是獨立的引數控制,可以自定義圖形寬度、長度、顏色以及半徑等,

1.1.3.1 文字引數
var txtOpts={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
| 引數 | 說明 | 備注 |
|---|---|---|
| content | 內容 | |
| txtColor | 文字顏色 | RGB(21,253,255)或者#FF0000 |
| align | 對齊方式 | 'center' |
| font | 文字樣式 | CSS font 屬性相同的語法 |
| textBaseline | 基線對齊方式 | //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic |
1.1.3.2內圓動態線(第一個圓)
{
radius: 51,//半徑,內圓動態線,
lineWidth: 10 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
}
?
| 引數 | 說明 | 備注 |
|---|---|---|
| radius | 半徑,內圓動態線 | 通過調整半徑大小,能夠自定義五個圖形的排序方式,從而形成新的影片圖形 |
| lineWidth | 寬度,調整動態線寬度 | |
| strokeStyle | 顏色,支持rgb rgba 網頁等 | 顏色支持透明度RGBA(200,200,200,0.5) |
| degreeStart | 開始角度 | |
| degreeEnd | 結束角度 | |
| stepStart | 開始遞增數量 | |
| stepEnd | 結束遞增數量 | |
| angleSpeed | 轉動速度 |
1.1.3.4靜態外圓(第三個圓)
{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
}
| 引數 | 說明 | 備注 |
|---|---|---|
| radius | 半徑 | 通過調整半徑大小,能夠自定義五個圖形的排序方式,從而形成新的影片圖形 |
| lineWidth | 寬度,調整動態線寬度 | 可以與其他重疊 |
| strokeStyle | 顏色,支持rgb rgba 網頁等 | 顏色支持透明度RGBA(200,200,200,0.5) |
| degreeStart | 開始角度 | 如果不想使用該圓,可以設定開始角度與結束角度相同,或者設定透明度 |
| degreeEnd | 結束角度 |
1.1.3.5內刻度盤(第四個圓)
{
radius: 53,//內刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
}
| 引數 | 說明 | 備注 |
|---|---|---|
| radius | 半徑 | 通過調整半徑大小,能夠自定義五個圖形的排序方式,從而形成新的影片圖形 |
| lineWidth | 刻度盤寬度 | |
| fillStyle | 刻度盤靜態色 | 顏色支持透明度RGBA(200,200,200,0.5) |
| emFillStyle | 刻度盤變化色 | |
| lengthParam | 刻度線長度 | |
| step | 變化占用多少個格 | 資料需要0至60之間 |
1.1.3.6外刻度盤(第五個圓)
{
radius: 80,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:18, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}
| 引數 | 說明 | 備注 |
|---|---|---|
| radius | 半徑 | 通過調整半徑大小,能夠自定義五個圖形的排序方式,從而形成新的影片圖形 |
lineWidth | 刻度盤寬度 | 可以與其他重疊 |
fillStyle | 刻度盤靜態色 | 顏色支持透明度RGBA(200,200,200,0.5)`` |
emFillStyle | 刻度盤變化色 | |
step | 變化占用多少個格 | 資料需要0至19之間 |
speed | 轉動速度 |
1.1.4 引數示例
1.1.4.1 示例1

//第一個圓圈
var canvas = document.getElementById("canvasData");
var txtOpts={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts = [{
radius: 51,//半徑,內圓動態線,
lineWidth: 10 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 50,//內圓線半徑,靜態的
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 53,//內刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 80,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:18, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle = RotatingCircle(canvas,opts,txtOpts);
circle.init();
circle.chageTxt("80%");
1.1.4.2 示例2

//第二個圓圈
var canvas2 = document.getElementById("canvasData2");
var txtOpts2={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts2 = [{
radius: 40,//半徑,內圓動態線,
lineWidth: 40 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 50,//內圓線半徑,靜態的
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 53,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 50,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle2 = RotatingCircle(canvas2,opts2,txtOpts2);
circle2.init();
circle2.chageTxt("20%");
1.1.4.3 示例3

//第三個圓圈
var canvas3 = document.getElementById("canvasData3");
var txtOpts3={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts3 = [{
radius: 85,//半徑,內圓動態線,
lineWidth: 2 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(21,255,255,1)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 3,
strokeStyle: 'RGBA(19,238,240,1)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 55,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 75,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:1,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 50,//外刻度盤
lineWidth: 3, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle3 = RotatingCircle(canvas3,opts3,txtOpts3);
circle3.init();
circle3.chageTxt("20%");
1.1.4.4 示例4
var canvas4 = document.getElementById("canvasData4");
var txtOpts4={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts4 = [{
radius: 72,//半徑,內圓動態線,
lineWidth: 2 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(255,255,255,1)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 5,
strokeStyle: 'RGBA(21,255,255,0.5)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 75,//內刻度盤
lineWidth: 1, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:19,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 50,//外刻度盤
lineWidth: 2, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle4 = RotatingCircle(canvas4,opts4,txtOpts4);
circle4.init();
circle4.chageTxt("20%");
原始碼檔案:-----fatterRotating.mini.js-----
function RotatingCircle(canvas,optsParam,txtOptsParam){var obj=new Object();obj.ctx=canvas.getContext('2d');if(0==canvas.clientWidth||0==canvas.clientHeight){obj.size=Math.min(canvas.width,canvas.height)}else{obj.size=Math.min(canvas.clientWidth,canvas.clientHeight)}obj.opts=optsParam;obj.txtOpts=txtOptsParam;obj.degreeStart=0;obj.degreeEnd=0;obj.clockmoveStep=0;obj.clockmoveStepOut=0;obj.init=function(){obj.createCircle()};obj.createFont=function(){this.ctx.clearRect(0,0,this.size,this.size);this.ctx.font="30px Arial";this.ctx.fillText("Hello World",this.size,this.size)};obj.createCircle=function(){var _curOpts=this.opts[0];var radius=_curOpts.radius;var lineWidth=_curOpts.lineWidth;var strokeStyle=_curOpts.strokeStyle;var stepStart=_curOpts.stepStart;var stepEnd=_curOpts.stepEnd;var angleSpeed=_curOpts.angleSpeed;this.degreeStart=this.degreeStart+stepStart;this.degreeEnd=this.degreeEnd+stepEnd;if(this.degreeStart-360>this.degreeEnd){this.degreeStart-=720}this.ctx.clearRect(0,0,this.size,this.size);this.ctx.lineWidth=lineWidth;this.ctx.strokeStyle=strokeStyle;this.ctx.beginPath();this.ctx.arc(this.size/ 2, this.size /2,radius-lineWidth/ 2, (this.degreeStart < this.degreeEnd ? this.degreeStart : this.degreeEnd) * Math.PI /180,(this.degreeStart<this.degreeEnd?this.degreeEnd:this.degreeStart)*Math.PI/180,false);this.ctx.stroke();this.ctx.save();var _curOpts2=this.opts[1];var lineWidth2=_curOpts2.lineWidth;var strokeStyle2=_curOpts2.strokeStyle;var radius2=_curOpts2.radius;var degreeStart2=_curOpts2.degreeStart;var degreeEnd2=_curOpts2.degreeEnd;this.ctx.lineWidth=lineWidth2;this.ctx.strokeStyle=strokeStyle2;this.ctx.beginPath();this.ctx.arc(this.size/ 2, this.size /2,radius2-lineWidth2/ 2, (degreeStart2) * Math.PI /180,(degreeEnd2)*Math.PI/180,false);this.ctx.stroke();this.ctx.restore();this.ctx.save();var _curOpts4=this.opts[3];var _emFillStyle4=_curOpts4.emFillStyle;var _fillStyle4=_curOpts4.fillStyle;var _step4=_curOpts4.step;var _radius4=_curOpts4.radius;var _lengthParam4=_curOpts4.lengthParam;this.ctx.lineWidth=_curOpts4.lineWidth;this.ctx.translate(this.size/ 2, this.size /2);for(var i=0;i<60;i++){if(i%5!=0){if(i>=this.clockmoveStep&&i<this.clockmoveStep+_step4){this.ctx.strokeStyle=_emFillStyle4}else{this.ctx.strokeStyle=_fillStyle4}this.ctx.beginPath();this.ctx.moveTo(_radius4,0);this.ctx.lineTo(_radius4+_lengthParam4,0);this.ctx.stroke()}this.ctx.rotate((-Math.PI/30))}this.clockmoveStep=this.clockmoveStep>=60?0:(this.clockmoveStep+0.5);this.ctx.restore();this.ctx.save();var _curOpts3=this.opts[2];var lineWidth3=_curOpts3.lineWidth;var strokeStyle3=_curOpts3.strokeStyle;var radius3=_curOpts3.radius;var degreeStart3=_curOpts3.degreeStart;var degreeEnd3=_curOpts3.degreeEnd;this.ctx.lineWidth=lineWidth3;this.ctx.strokeStyle=strokeStyle3;this.ctx.beginPath();this.ctx.arc(this.size/ 2, this.size /2,radius3+lineWidth3+14,(degreeStart3)*Math.PI/ 180, (degreeEnd3) * Math.PI /180,false);this.ctx.stroke();this.ctx.restore();this.ctx.save();this.ctx.beginPath();this.ctx.restore();this.ctx.font=this.txtOpts.font;this.ctx.textAlign=this.txtOpts.align;this.ctx.fillStyle=this.txtOpts.txtColor;this.ctx.textBaseline=this.txtOpts.textBaseline;this.ctx.fillText(this.txtOpts.content,this.size/ 2, this.size /2);this.ctx.restore();this.ctx.save();var _curOpts5=this.opts[4];var _emFillStyle5=_curOpts5.emFillStyle;var _fillStyle5=_curOpts5.fillStyle;var _step5=_curOpts5.step;var _speed5=_curOpts5.speed;var _radius5=_curOpts5.radius;var _lineWidth5=_curOpts5.lineWidth; this.ctx.translate(this.size/ 2, this.size /2);this.ctx.lineWidth=_lineWidth5;for(var i=0;i<60;i++){if((i>=this.clockmoveStepOut&&i<this.clockmoveStepOut+_step5)){this.ctx.fillStyle="RGBA("+_emFillStyle5+","+(i-this.clockmoveStepOut)/20+")"}else if(i>=(this.clockmoveStepOut+20)&&i<this.clockmoveStepOut+20+_step5){this.ctx.fillStyle="RGBA("+_emFillStyle5+","+(i-this.clockmoveStepOut-20)/20+")"}else if(i>=(this.clockmoveStepOut+40)&&i<this.clockmoveStepOut+40+_step5){this.ctx.fillStyle="RGBA("+_emFillStyle5+","+(i-this.clockmoveStepOut-40)/20+")"}else if(this.clockmoveStepOut+(40+_step5)>60&&i<(this.clockmoveStepOut+(40+_step5)-60)){this.ctx.fillStyle="RGBA("+_emFillStyle5+","+(20-this.clockmoveStepOut+i)/20+")"}else{this.ctx.fillStyle=_fillStyle5}this.ctx.beginPath();this.ctx.arc(_radius5,0,_lineWidth5,0,Math.PI*2,false);this.ctx.fill();this.ctx.rotate((Math.PI/30))}this.clockmoveStepOut=this.clockmoveStepOut>=20?0:(this.clockmoveStepOut+_speed5);this.ctx.restore()};obj.chageTxt=function(contentTxt){if(null!=this.txtOpts){this.txtOpts.content=contentTxt}};return obj};
原始碼檔案:-----html頁面-----
<!DOCTYPE html>
<html lang="en">
<head>
<!--
牟云飛
15562579597
-->
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<canvas id="canvasData" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData2" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData3" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData4" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData5" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData6" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData7" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<canvas id="canvasData8" width="400px" height="400px" style="background: url('images/background.png')"></canvas>
<script src="js/fatterRotating.mini.js"></script>
<script>
var circle ;
var circle2 ;
var circle3 ;
var circle4 ;
var circle5 ;
var circle6 ;
var circle7 ;
var circle8 ;
function init(){
//第一個圓圈
var canvas = document.getElementById("canvasData");
var txtOpts={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts = [{
radius: 51,//半徑,內圓動態線,
lineWidth: 10 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 50,//內圓線半徑,靜態的
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: 360,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 53,//內刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 80,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:18, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle = RotatingCircle(canvas,opts,txtOpts);
circle.init();
circle.chageTxt("80%");
//第二個圓圈
var canvas2 = document.getElementById("canvasData2");
var txtOpts2={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts2 = [{
radius: 40,//半徑,內圓動態線,
lineWidth: 40 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 50,//內圓線半徑,靜態的
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 53,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 50,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle2 = RotatingCircle(canvas2,opts2,txtOpts2);
circle2.init();
circle2.chageTxt("20%");
//第三個圓圈
var canvas3 = document.getElementById("canvasData3");
var txtOpts3={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts3 = [{
radius: 85,//半徑,內圓動態線,
lineWidth: 2 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(21,255,255,1)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 3,
strokeStyle: 'RGBA(19,238,240,1)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 55,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 75,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:1,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 50,//外刻度盤
lineWidth: 3, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle3 = RotatingCircle(canvas3,opts3,txtOpts3);
circle3.init();
circle3.chageTxt("20%");
//第三個圓圈
var canvas4 = document.getElementById("canvasData4");
var txtOpts4={
content:'40%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts4 = [{
radius: 72,//半徑,內圓動態線,
lineWidth: 2 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(255,255,255,1)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 5,
strokeStyle: 'RGBA(21,255,255,0.5)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 75,//內刻度盤
lineWidth: 4, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:12,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 50,//外刻度盤
lineWidth: 2, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle4 = RotatingCircle(canvas4,opts4,txtOpts4);
circle4.init();
circle4.chageTxt("20%");
//第五個圓圈
var canvas5 = document.getElementById("canvasData5");
var txtOpts5={
content:'88%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts5 = [{
radius: 90,//半徑,內圓動態線,
lineWidth: 20 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(21,253,255,0.5)',//顏色,支持rgb rgba 網頁等
degreeStart: -90,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 50,//內圓線半徑,靜態的
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: 360,
degreeEnd: 360
},{
radius: 50,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: '#eeeeee',
degreeStart: -90,
degreeEnd: 360
},{
radius: 53,//內刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 80,//外刻度盤
lineWidth: 5, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0)',//外刻度盤,靜態色
emFillStyle: '219,38,40',//外刻度盤,變化色
step:18, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle5 = RotatingCircle(canvas5,opts5,txtOpts5);
circle5.init();
circle5.chageTxt("66%");
//第六個圓圈
var canvas6 = document.getElementById("canvasData6");
var txtOpts6={
content:'88%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts6 = [{
radius: 60,//半徑,內圓動態線,
lineWidth: 6 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.6)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 3,
strokeStyle: 'RGBA(19,238,240,1)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 55,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: 'RGBA(19,238,240,0)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 70,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:2,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 85,//外刻度盤
lineWidth: 3, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0.3)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle6 = RotatingCircle(canvas6,opts6,txtOpts6);
circle6.init();
circle6.chageTxt("66%");
//第七個圓圈
var canvas7 = document.getElementById("canvasData7");
var txtOpts7={
content:'88%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts7 = [{
radius: 60,//半徑,內圓動態線,
lineWidth: 6 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.6)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 3,
strokeStyle: 'RGBA(19,238,240,1)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 55,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: 'RGBA(19,238,240,0)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 70,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:6,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 85,//外刻度盤
lineWidth: 6, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0.3)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle7 = RotatingCircle(canvas7,opts7,txtOpts7);
circle7.init();
circle7.chageTxt("66%");
//第八個圓圈
var canvas8 = document.getElementById("canvasData8");
var txtOpts8={
content:'88%',
txtColor:'RGB(21,253,255)',
align:'center',
font: '30px Arial', //CSS font 屬性相同的語法
textBaseline:'middle' //基線對齊選項,top, hanging, middle, alphabetic, ideographic, bottom,默認值是 alphabetic
};
var opts8 = [{
radius: 60,//半徑,內圓動態線,
lineWidth: 30 ,//寬度,調整動態線寬度
strokeStyle: 'RGBA(200,200,200,0.6)',//顏色,支持rgb rgba 網頁等
degreeStart: -180,//開始角度
degreeEnd: 200,//結束角度
stepStart: 4,//開始遞增數量
stepEnd: 3,//結束遞增數量
angleSpeed:0.01//轉動速度
},{
radius: 65,//內圓線半徑,靜態的
lineWidth: 3,
strokeStyle: 'RGBA(19,238,240,1)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 55,//靜態最外成圈,非刻度盤
lineWidth: 1,
strokeStyle: 'RGBA(19,238,240,0)',
degreeStart: -90,
degreeEnd: 360
},{
radius: 70,//內刻度盤
lineWidth: 8, //刻度盤寬度
fillStyle:'RGBA(19,238,240,1)',//內刻度盤,靜態色
emFillStyle: 'RGB(255,255,255)',//內刻度盤,變化色
lengthParam:16,//刻度線長度
step: 10 //變化占用多少個格 0-60
},{
radius: 85,//外刻度盤
lineWidth: 6, //刻度盤寬度
fillStyle:'RGBA(21,253,255,0.3)',//外刻度盤,靜態色
emFillStyle: '21,253,255',//外刻度盤,變化色
step:12, //變化占用多少個格 0-19
speed:0.4 //轉動速度
}];
circle8 = RotatingCircle(canvas8,opts8,txtOpts8);
circle8.init();
circle8.chageTxt("66%");
//動起來
refer();
}
//統一的影片入口
function refer(){
window.requestAnimationFrame(function(){
circle.createCircle();
circle2.createCircle();
circle3.createCircle();
circle4.createCircle();
circle5.createCircle();
circle6.createCircle();
circle7.createCircle();
circle8.createCircle();
refer();
});
}
init();
</script>
</body>
</html>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/339183.html
標籤:其他
上一篇:vue 實作 全選功能
