最近一直在研究瀏覽器端的圖形圖表繪制技術(shù),從種類上可以分為兩種:
一類是矢量圖形繪制API,典型代表是微軟的VML與W3C主推的SVG
另外一類是基于像素的繪制API,典型代表是HTML5 Canvas
背景介紹:
VML是微軟推出的基于IE的矢量圖形繪制API,注意VML只能在IE中支持,而SVG是W3C
推出的矢量圖型API,顯然IE不待見它,所以只能在非IE的瀏覽器上支持,IE上要想顯示
SVG格式的圖形,必須額外安裝插件。
HTML5 Canvas是W3C推出的新一代瀏覽器端繪圖API,微軟從IE9+開始支持HTML5
Canvas渲染技術(shù),其它主流瀏覽器都支持該技術(shù)。
技術(shù)優(yōu)缺點:
VML是基于XML方式來組織繪制對象,支持相對與絕對定位方式,同時支持group元素,
可以將一組元素對象繪制在一個group元素上,group上默認(rèn)支持絕對定位方式繪制圖形
VML技術(shù)繪制的圖形每個都是元素對象,可以任意添加鼠標(biāo)監(jiān)聽事件,而且每個元素對
象內(nèi)置支持tooltip功能,但是VML本身不支持動畫。不支持單獨的文字繪制,文字繪制
必須依附其它頂級的VML 元素。同時微軟在IE8時候的改動,導(dǎo)致VML在不同的IE瀏覽
器版本上使用略有不同。一個最常用的支持VML調(diào)用JavaScript腳本如下:
var e=["shape","shapetype","group","background","path","formulas",
"handles","fill","stroke","shadow","textbox","textpath","imagedata","line",
"polyline","curve","roundrect","oval","rect","arc","image"],
s=document.createStyleSheet();
for(var i=0; i<e.length;i++) {
s.addRule("v\\:"+e[i],"behavior: url(#default#VML);");}
document.namespaces.add("v","urn:schemas-microsoft-com:vml");
}
VML支持2D與3D渲染技術(shù),可以繪制出效果非常好的圖行。當(dāng)前支持VML技術(shù)繪制的
開源的前端圖表庫有很多,可能大家最熟悉就是JQuery的圖表庫與Highchart的圖表庫
SVG技術(shù)與VML技術(shù)都是提供矢量圖形繪制元素,繪制圖形上每個元素都支持鼠標(biāo)監(jiān)聽
SVG比VML做的好地方就是文本繪制,直接支持文本對象,不得不說VML的文本繪制太
TMD的變態(tài)。SVG也是基于XML文本描述的,這點跟VML非常相似。值得稱贊的是SVG
的JavaScript調(diào)用非常的容易與簡潔。同樣IE6~I(xiàn)E8都不支持SVG渲染與顯示,解決辦
法就自己裝個adobe的SVG Viewer插件,IE9+之后版本支持SVG,所以說IE才是最坑
爹的瀏覽器,而且是在中國使用人數(shù)最多的瀏覽器,這都拜微軟捆綁銷售所賜。
HTML5 Canvas是W3C推出來用來替代SVG的前端圖形技術(shù),Canvas是基于像素的渲
染技術(shù)實現(xiàn),所以它跟SVG與VML相比,放大與縮小很麻煩,位圖大家都懂。但是
Canvas相比VML與SVG還是有很多優(yōu)點,第一個廢除了每個繪制元素都是對象的做法,
浪費資源??!支持操作圖像像素,可以支持Base64編碼,在前端就可以保存為圖像,
這個都是SVG與VML做不到的啊,Canvas借鑒編程語言圖形庫的設(shè)計思想,對有圖形
開發(fā)經(jīng)驗的人掌握起來非常容易。而VML與SVG是基于XML的設(shè)計,只能通過
JavaScript來操作元素,只有對每個元素指定一個ID,你才可以獲取到它,而Canvas支
持擦除與重繪制非常的方便。
最后想瞎掰一下那些開源的前端圖表庫
名頭最嚇人的應(yīng)該是Google推出的google chart開源前端圖表庫,據(jù)它自己說基于
HTML5與SVG技術(shù),在老版本的IE上使用VML技術(shù)。
功能最強(qiáng)大的應(yīng)該是HighChart圖表庫,官方說它們是基于SVG與VML技術(shù),下一
個版本將融入HTML5技術(shù)
canvasXpress自己說是完全標(biāo)準(zhǔn)的HTML5技術(shù)實現(xiàn)的圖表庫,但是如果想在IE9之
下版本支持必須額外包括FlashCanvas 或者ExplorerCanvas,而且還說IE上面運行很
慢,建議IE上使用時安裝Google iframe框架。
RGraph自己說是完全HTML5技術(shù)實現(xiàn),實際上是VML 與HTML Canvas混合實現(xiàn),
支持大多數(shù)主流瀏覽器。
這些都國外的,國內(nèi)淘寶有個開源的前端圖表庫,但是支持的功能實在有限,通用性
有待提高。
SVG, VML, HTML5 Canvas三種前端圖形渲染技術(shù),沒有一種是可以支持全部瀏覽
器的,這個就給實際項目中使用帶來不變,一般都會借助開源的圖表框架實現(xiàn)跨瀏覽
器支持。
轉(zhuǎn)載請注明-gloomyfish
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前文章:瀏覽器端圖表渲染技術(shù)SVG,VMLHTMLCanvas-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article22/dghocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、微信小程序、移動網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、定制開發(fā)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)