SVG實現畫弧線進度條

2021-08-08 21:51:29 字數 2121 閱讀 3541

畫一段到(x,y)的橢圓弧. 橢圓弧的 x, y 軸半徑分別為 rx,ry. 橢圓相對於 x 軸旋轉 x-axis-rotation 度.

large-arc=0表明弧線小於180讀, large-arc=1表示弧線大於180度. sweep=0表明弧線逆時針旋轉,

sweep=1表明弧線順時間旋轉.

角度換算弧度:弧度的計算公式為: 2*π/360*角度

三角形的正玄、余弦:數學公用庫math提供正玄函式sin(x)和余弦函式cos(x)注意:函式中的x 都是指的「弧度」而非「角度

解決思路:根據三角形的正玄、余弦來得值;

假設乙個圓的圓心座標是(a,b),半徑為r,

則圓上每個點的x座標=a + math.sin(2*math.pi / 360) * r ;y座標=b + math.cos(2*math.pi / 360) * r ;

/**

* 傳入相應引數返回圓形制定半徑的弧度座標

* @param x 中心點x座標

* @param y 中心點y座標

* @param r 圓半徑

* @param a 角度

*/function coordmap(x, y, r, a)

}/**

* 建立弧線

* @param data.startangle 開始角度

* @param data.endangle 結束角度

* @param data.r 圓半徑

* @param data.x 中心點x座標

* @param data.y 中心點y座標

* @param data.color 邊框顏色 預設#ccc

* @param data.strokewidth 邊框寬度 預設1

* @param data.strokelinecap 不同型別的路徑的開始結束點 可選值 butt round square 預設butt

* @param data.strokedasharray 虛線設定 它是乙個和數列,數與數之間用逗號或者

* 空白隔開,指定短劃線和缺口的長度。如果提供了奇數個值,則這個值的數列重複一次,從而變成偶數個值。因此,5,3,2等同於5,3,2,5,3,2。

* @param data.transform css3旋轉設定

*/function drawsvg(data)

/** * 畫進度條

* @param $select 容器

* @param size 多少步 共100步

*/function svgview($select, size) ));

// 步長

var step = (315 - 45) / 100,

i = 1;

// 畫第一步並加入svg中

startangle: 45,

endangle: 45 + step * i,

x: 120,

y: 130,

r: 90,

strokelinecap: 'round',

strokewidth: 10,

color: '#ffe400',

transform: 'rotate(-270, 120, 130)'

}));

// 寫入頁面

// 通過設定時間迴圈步

var tc = setinterval(function() ), svg.lastchild);

i++;

if (i > size)

}, 20);

};svgview('#svgview', 80);

SVG環形進度條

svg scalabe vetor graphics 可縮放向量圖作技術,發源自xml家族。其優秀方便的圖形表現形式,讓其被當下各大瀏覽器所支援。由於其中可內嵌於html,表現出像dom自身元素一樣的性質,而被廣泛的用於html中的圖形表現。今天我作為乙個小白,根據最近的專案經驗和大家分享乙個用sv...

svg 實現半環形進度條

path元素用來定義形狀的通用元素。下面的命令可用於路徑資料 注釋 以上所有命令均允許小寫字母。大寫表示絕對定位,小寫表示相對定位。例如 畫個圓環 解析 symbol元素用來定義乙個圖形模板物件,它可以用乙個元素例項化。symbol元素對圖形的作用是在同一文件中多次使用,新增結構和語義。結構豐富的文...

canvas 畫進度條

var circle01 document.queryselector mycanvas01 drawall 50,math.pi,circle01 function drawall percent,sr,canvasid if sr math.pi 2 sr 3 2 math.pi var cxt...