svg 格式详解

一、SVG(Scalable Vector Graphics)的定义与特点

1. 定义

SVG 是一种基于 XML(可扩展标记语言)的矢量图形格式。它用于描述二维图形,通过使用 XML 标签和属性来定义图形的形状、颜色、位置、大小等各种属性。与位图(如 JPEG、PNG)不同,矢量图形是由数学公式定义的图形元素组成,所以 SVG 图形在放大或缩小后不会出现失真的情况,能够始终保持清晰的图像质量。

2. 特点

可缩放性、文件大小相对较小、可编辑性和交互性

二、SVG 的基本语法结构

1. 根元素

SVG 文件的根元素是`<svg>`,它包含了整个 SVG 图形的定义。在`<svg>`标签中,可以设置图形的宽度(`width`)、高度(`height`)、视图框(`viewBox`)等属性。

<svg width="100px" height="100px" viewBox="0 0 100 100">

    <!-- 这里放置其他图形元素 -->

</svg>

2. 基本图形元素

SVG 包含多种基本图形元素,如`<circle>`(圆形)、`<rect>`(矩形)、`<line>`(直线)、`<polyline>`(折线)、`<polygon>`(多边形)等。

2.1 圆形元素

<circle cx="50" cy="50" r="30" fill="blue" />

这里`cx`和`cy`分别是圆心的`x`坐标和`y`坐标,`r`是圆的半径,`fill`属性用于设置填充颜色,这个圆形的圆心位于 SVG 图形的`(50,50)`位置,半径为 30 像素,填充颜色为蓝色。

2.2 矩形元素

<rect x="10" y="10" width="80" height="60" stroke="black" fill="none" />

其中`x`和`y`是矩形左上角的坐标,`width`和`height`分别是矩形的宽度和高度,`stroke`属性用于设置边框颜色,`fill`属性用于设置填充颜色。这个矩形左上角位于`(10,10)`位置,宽 80 像素,高 60 像素,有黑色边框,没有填充颜色。

三、SVG 的高级特性

1. 渐变和图案填充

SVG 支持线性渐变(`linearGradient`)和径向渐变(`radialGradient`)来填充图形。可以定义渐变的颜色、方向和范围等属性。

<defs>

    <linearGradient id="myGradient" x1="0%" y1="0%" x2="100%" y2="0%">

        <stop offset="0%" stop - color="yellow" />

        <stop offset="100%" stop - color="red" />

    </linearGradient>

</defs>

<rect x="10" y="10" width="80" height="60" fill="url(#myGradient)" />

首先在`<defs>`(定义)元素中定义了一个线性渐变,`id`为`myGradient`,渐变方向是从左到右(`x1="0%" y1="0%" x2="100%" y2="0%"`),渐变颜色从黄色(`stop - color="yellow"`在`offset="0%"`处)过渡到红色(`stop - color="red"`在`offset="100%"`处)。然后将这个渐变应用到矩形的填充属性(`fill="url(#myGradient)"`)。

2. 文本和字体处理

SVG 可以包含文本元素(`<text>`),并且可以对文本进行样式设置,如字体、字号、颜色、对齐方式等。例如:

<text x="20" y="40" font - family="Arial" font - size="16" fill="black">这是SVG中的文本</text>

这里文本的位置由`x`和`y`坐标确定,字体为`Arial`,字号为 16 像素,颜色为黑色。此外,SVG 还支持使用外部字体文件(通过`@font - face`规则)来提供更丰富的字体选择。

3. 滤镜效果

SVG 提供了各种滤镜效果,如模糊(`feGaussianBlur`)、阴影(`feDropShadow`)等,可以为图形添加特殊的视觉效果。

<defs>

    <filter id="blurFilter">

        <feGaussianBlur in="SourceGraphic" stdDeviation="3" />

    </filter>

</defs>

<circle cx="50" cy="50" r="30" fill="blue" filter="url(#blurFilter)" />

在`<defs>`元素中定义了一个模糊滤镜(`id="blurFilter"`),其中`feGaussianBlur`元素用于设置模糊效果,`in="SourceGraphic"`表示对原始图形进行模糊,`stdDeviation="3"`指定了模糊的程度。然后将这个滤镜应用到圆形的`filter`属性(`filter="url(#blurFilter)"`)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yqcoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值