- 矩形 <rect>
- 圓形 <circle>
- 橢圓 <ellipse>
- 線 <line>
- 折線 <polyline>
- 多邊形 <polygon>
- 路徑 <path>
什么是SVG?
SVG 指可伸縮矢量圖形 (Scalable Vector Graphics)
SVG 用來定義用於網絡的基於矢量的圖形
SVG 使用 XML 格式定義圖形
SVG 圖像在放大或改變尺寸的情況下其圖形質量不會有所損失
SVG 是萬維網聯盟的標准
SVG 與諸如 DOM 和 XSL 之類的 W3C 標准是一個整體
SVG
SVG 是一種使用 XML 描述 2D 圖形的語言。
SVG 基於 XML,這意味着 SVG DOM 中的每個元素都是可用的。您可以為某個元素附加 JavaScript 事件處理器。
在 SVG 中,每個被繪制的圖形均被視為對象。如果 SVG 對象的屬性發生變化,那么瀏覽器能夠自動重現圖形。
特點:
不依賴分辨率
支持事件處理器
最適合帶有大型渲染區域的應用程序(比如谷歌地圖)
復雜度高會減慢渲染速度(任何過度使用 DOM 的應用都不快)
不適合游戲應用
Canvas
Canvas 通過 JavaScript 來繪制 2D 圖形。
Canvas 是逐像素進行渲染的。
在 canvas 中,一旦圖形被繪制完成,它就不會繼續得到瀏覽器的關注。如果其位置發生變化,那么整個場景也需要重新繪制,包括任何或許已被圖形覆蓋的對象。
特點:
依賴分辨率
不支持事件處理器
弱的文本渲染能力
能夠以 .png 或 .jpg 格式保存結果圖像
<svg width="100%" height="100%" > <circle cx="300" cy="60" r="50" stroke="#ff0" stroke-width="3" fill="red" /> </svg> <img src="kiwi.svg" alt="新西蘭鷸鴕鳥"> <a href="/" class="logo" style="background: url(kiwi.svg); display: block;text-indent: -9999px;width: 100px;height: 82px;background-size: 100px 82px;"> 新西蘭 </a>
適用性:一個圖標字體比一系列的圖像(特別是在Retina屏中使用雙倍大小的圖像)要小。一旦圖標字體加載了,你的圖標就會馬上渲染出來,不需要下載一個圖像。
可擴展性:圖標字體可以用過font-size屬性設置其任何大小。這使您能夠隨時輸出不同大小的圖標,然而,使用位圖,你必須得為每個不同大小的圖像輸出一個不同文件。
靈活性:文字效果可以很容易地應用到你的圖標上,包括顏色,陰影和翻轉等效果。他們還可以在任何背景下顯示。
兼容性:網頁字體支持所有現代瀏覽器,包括IE低版本。
弊端:
1、瀏覽器將其視為文字進行抗鋸齒優化,有時得到的效果並沒有想象中那么銳利。 尤其是在不同系統下對文字進行抗鋸齒的算法不同,可能會導致顯示效果不同。
2、Icon Font 作為一種字體,Icon 顯示的大小和位置可能要受到font-size
、line-height
、word-spacing
等等 CSS 屬性的影響。 Icon 所在容器的 CSS 樣式可能對 Icon 的位置產生影響,調整起來很不方便。
3、使用上存在不便。首先,加載一個包含數百圖標的 Icon Font,卻只使用其中幾個圖標,非常浪費加載時間。 如果是自己制作 Icon Font 以及把多個 Icon Font 中用到的圖標整合成一個 Font 也非常不方便。當然使用阿里UX矢量圖標庫可以解決這個問題
4、為了實現最大程度的瀏覽器支持,可能要提供至少四種不同類型的字體文件。包括TTF、WOFF、EOT 以及一個使用 SVG 格式定義的字體。如果是自己制作的話,可能要頭疼死