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>
浏览器输出

在上面的示例中,代码创建了一个宽度为 **100** 像素,高度为 **100** 像素的 SVG 元素。该 SVG 元素有一个实心黑色边框。
在 <svg>
元素内部,我们使用 <circle>
元素创建了一个圆形。cx
和 cy
属性定义了圆心的 **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>
浏览器输出

在此示例中,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>
浏览器输出

在此示例中,preserveAspectRatio
属性设置为 meet
,因此圆形将(如果需要)缩小以适应视口。结果,圆形周围有空白区域。
视口 (viewport) 和 viewBox
SVG 视口
视口是 SVG 的可见区域。我们使用 width
和 height
属性来定义 SVG 的视口。例如:
<svg width="100" height="100" style="border: 1px solid black">
<circle cx="50" cy="50" r="50" fill="blue" />
</svg>
浏览器输出

在上面的示例中,我们创建了一个高宽都为 **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>
浏览器输出

这里,viewBox
的前两个参数分别是 min-x
和 min-y
。它们定义了 viewBox
的左上角。
min-x
的值将我们的 viewBox
向右移动 **50** 像素。同样,min-y
的值将我们的 viewBox
向下移动 **50** 像素。这就是为什么我们只能看到圆的右下部分。
第三和第四个参数分别表示 viewBox
的 width
和 height
。它们也可以用于放大和缩小。
使用 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>
浏览器输出

在上面的示例中,viewbox
的 height
和 width
值大于视口大小,因此圆形已缩小。
使用 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>
浏览器输出

在上面的示例中,viewbox
的 height
和 width
值小于视口大小,因此圆形已放大。
为什么选择 SVG?
使用 SVG 的优点是:
- 即使调整大小,SVG 也能保持其质量和轻量级。
- 它们具有一致的文件大小,并且可以用简单的代码轻松创建和编辑。
- SVG 代码是人类可读的,不需要任何专用软件。