HTML SVG


SVG 以 XML 格式定义基于矢量的图形。


什么是 SVG?

  • SVG 代表可缩放矢量图形
  • SVG 用于定义 Web 图形
  • SVG 是 W3C 推荐标准

HTML <svg> 元素

HTML<svg>element 是 SVG 图形的容器。

SVG 有多种方法用于绘制路径、方框、圆形、文本和图形图片。


浏览器支持

表中的数字指定第一个完全支持的浏览器版本<svg>元素。

Element
<svg> 4.0 9.0 3.0 3.2 10.1

SVG 圆

示例

<!DOCTYPE html>
<html>
<body>

<svg width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" />
</svg>

</body>
</html>
亲自试一试 »


SVG 矩形



示例

<svg width="400" height="100">
  <rect width="400" height="100" style="fill:rgb(0,0,255);stroke-width:10;stroke:rgb(0,0,0)" />
</svg>
亲自试一试 »

SVG 圆角矩形

抱歉,您的浏览器不支持内联 SVG。

示例

<svg width="400" height="180">
  <rect x="50" y="20" rx="20" ry="20" width="150" height="150"
  style="fill:red;stroke:black;stroke-width:5;opacity:0.5" />
</svg>
亲自试一试 »

SVG星

抱歉,您的浏览器不支持内联 SVG。

示例

<svg width="300" height="200">
  <polygon points="100,10 40,198 190,78 10,78 160,198"
  style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
亲自试一试 »

SVG标志

SVG 抱歉,您的浏览器不支持内联 SVG。

示例

<svg height="130" width="500">
  <defs>
    <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="100" cy="70" rx="85" ry="55" fill="url(#grad1)" />
  <text fill="#ffffff" font-size="45" font-family="Verdana" x="50" y="86">SVG</text>
  Sorry, your browser does not support inline SVG.
</svg>
亲自试一试 »

SVG 和 Canvas 之间的区别

SVG 是一种用 XML 描述 2D 图形的语言。

Canvas 动态绘制 2D 图形(使用 JavaScript)。

SVG 基于 XML,这意味着每个元素在 SVG DOM 中都可用。您可以为元素附加 JavaScript 事件处理程序。

在 SVG 中,每个绘制的形状都被视为一个对象。如果 SVG 对象的属性发生更改,浏览器可以自动重新渲染形状。

画布是逐像素渲染的。在canvas中,一旦绘制了图形,浏览器就会忘记它。如果其位置发生变化,则需要重新绘制整个场景,包括可能被图形覆盖的任何对象。


Canvas 和 SVG 的比较

下表显示了 Canvas 和 SVG 之间的一些重要区别:

Canvas SVG
  • Resolution dependent
  • No support for event handlers
  • Poor text rendering capabilities
  • You can save the resulting image as .png or .jpg
  • Well suited for graphic-intensive games
  • Resolution independent
  • Support for event handlers
  • Best suited for applications with large rendering areas (Google Maps)
  • Slow rendering if complex (anything that uses the DOM a lot will be slow)
  • Not suited for game applications

SVG 教程

要了解有关 SVG 的更多信息,请阅读我们的SVG 教程