HTML SVG

SVG(可伸缩矢量图形)用于创建 2D 图形,如形状、徽标、图表等。

HTML <svg> 标签用于在网页中嵌入 SVG 图形。例如:

<svg width="100" height="100" style="border:1px solid black;">
    <circle cx="50" cy="50" r="30" fill="blue" />
</svg>

浏览器输出

A Circle SVG

在上面的示例中,代码创建了一个宽度为 **100** 像素,高度为 **100** 像素的 SVG 元素。该 SVG 元素有一个实心黑色边框。

<svg> 元素内部,我们使用 <circle> 元素创建了一个圆形。cxcy 属性定义了圆心的 **x** 和 **y** 坐标,而 r 属性定义了 **半径**。fill 属性决定了圆形的颜色,在此示例中设置为 blue

这些元素共同创建了一个蓝色圆形,带有黑色边框,并居中于 <svg> 容器内。


SVG 的属性

SVG 有各种属性。它们如下所示:

  • preserveAspectRatio
  • 视口 (viewport) 和 viewBox

preserveAspectRatio

preserveAspectRatio 属性用于 SVG 元素中,指定元素在视口中如何缩放和对齐。此属性决定了当元素被调整大小或拉伸时,元素的宽高比(宽度与高度的比率)如何保持不变。例如:

<svg width="100" height="150" viewBox="0 0 100 100" preserveAspectRatio="none" style="border: 1px solid black">
    <circle cx="50" cy="50" r="50" />
</svg>

浏览器输出

SVG with preserveAspectRatio set to none

在此示例中,preserveAspectRatio 属性设置为 none,因此圆形将被拉伸以适应视口的尺寸。结果,圆形看起来会变形。让我们看另一个例子。

<svg width="100" height="150" viewBox="0 0 100 100" preserveAspectRatio="meet" style="border: 1px solid black">
  <circle cx="50" cy="50" r="50" />
</svg>

浏览器输出

SVG with preserveAspectRatio set to 'meet'

在此示例中,preserveAspectRatio 属性设置为 meet,因此圆形将(如果需要)缩小以适应视口。结果,圆形周围有空白区域。


视口 (viewport) 和 viewBox

SVG 视口

视口是 SVG 的可见区域。我们使用 widthheight 属性来定义 SVG 的视口。例如:

<svg width="100" height="100" style="border: 1px solid black">
  <circle cx="50" cy="50" r="50" fill="blue" />
</svg>

浏览器输出

SVG viewport

在上面的示例中,我们创建了一个高宽都为 **100** 像素的 SVG。

SVG viewBox

viewBox 属性在用户空间中定义了 SVG 视口的位置和尺寸。可以把它想象成一个用于观察 SVG 内部元素的望远镜。我们可以左右移动 viewBox,也可以放大和缩小。让我们看一个例子:

<svg width="100" height="100" viewbox = "50 50 50 50"style="border: 1px solid black">
  <circle cx="50" cy="50" r="50" fill="blue" />
</svg>

浏览器输出

Move SVG view box

这里,viewBox 的前两个参数分别是 min-xmin-y。它们定义了 viewBox 的左上角。

min-x 的值将我们的 viewBox 向右移动 **50** 像素。同样,min-y 的值将我们的 viewBox 向下移动 **50** 像素。这就是为什么我们只能看到圆的右下部分。

第三和第四个参数分别表示 viewBoxwidthheight。它们也可以用于放大和缩小。


使用 SVG viewBox 缩小

如果 viewbox 的大小大于视口,则 circle 将缩小。让我们看一个例子:

<svg width="100" height="100" viewbox = "0 0 1000 1000"style="border: 1px solid black">
  <circle cx="50" cy="50" r="50" fill="blue" />
</svg>

浏览器输出

SVG viewbox zoom out

在上面的示例中,viewboxheightwidth 值大于视口大小,因此圆形已缩小。


使用 SVG viewBox 放大

如果 viewbox 的大小小于视口,则圆形将放大。例如:

<svg width="100" height="100" viewbox = "0 0 25 25"style="border: 1px solid black">
  <circle cx="50" cy="50" r="50" fill="blue" />
</svg>

浏览器输出

SVG viewbox zoom in

在上面的示例中,viewboxheightwidth 值小于视口大小,因此圆形已放大。


为什么选择 SVG?

使用 SVG 的优点是:

  • 即使调整大小,SVG 也能保持其质量和轻量级。
  • 它们具有一致的文件大小,并且可以用简单的代码轻松创建和编辑。
  • SVG 代码是人类可读的,不需要任何专用软件。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战