📜  SVG教程(1)

📅  最后修改于: 2023-12-03 15:35:12.138000             🧑  作者: Mango

SVG 教程

本教程旨在为程序员提供对 SVG 的全面介绍,帮助大家更好地理解和运用 SVG。

什么是 SVG?

SVG 是可缩放矢量图形 (Scalable Vector Graphics)的缩写。与其他图像格式(如 JPG 和 PNG)不同,SVG 图像是基于 XML 的,它使用矢量图形描述来创建图像,并且可以使用 CSS 和 JavaScript 进行控制和动画。

与像素图形不同,SVG 图像是由数学方程式和几何元素描述的,即:SVG 图像具有无限的分辨率,无论尺寸如何,图像都不会变得模糊或失真。

SVG 图像在网络应用中经常使用,因为它们可以缩放以适应任何屏幕大小和分辨率。

SVG 的优点
  1. 支持多种动画效果;
  2. 可以对其属性进行深入的动态操作;
  3. 图像可缩放而不失真;
  4. 仅需极小的文件大小。
如何使用 SVG
直接嵌入 SVG 到 HTML 中

使用HTML引入 SVG 代码即可将 SVG 图片嵌入网页中,示例代码如下:

<!DOCTYPE html>
<html>
<body>

<h2>这是一个SVG示例</h2>

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

</body>
</html>

代码解释如下:

  • <svg> 标签定义 SVG 基本图形。
  • widthheight 属性定义 SVG 的高度和宽度。
  • <circle> 标签用于定义一个圆形,cxcy 属性定义圆心坐标,r 属性定义圆的半径。
  • stroke 属性用于定义边框颜色,stroke-width 属性用于定义边框宽度。
  • fill 属性定义填充颜色。
使用外部 SVG 文件

将一个SVG文件定义在外部文件中,并使用HTML对象元素嵌入SVG,示例代码如下:

<!DOCTYPE html>
<html>
<body>

<h2>这是一个SVG示例</h2>

<object type="image/svg+xml" data="image.svg">
</object>

</body>
</html>

代码解释如下:

  • type 属性定义资源的 MIME 类型。
  • data 属性定义外部资源的 URL 地址。
SVG 坐标系统

SVG 中,坐标系统被定义为有两个轴:x 轴和 y 轴。原点为 (0, 0),x 轴向右,y 轴向下。

SVG 坐标系统可以分为两种类型:

  1. 用户坐标系统:用户坐标系统是最通用的坐标系统,通常使用像素或其他相对的度量单位定义。
  2. 物理坐标系统: 物理坐标系统是固定的像素刻度,与屏幕或打印设备的物理坐标系相对应。
SVG 基本图形

SVG 支持众多的形状,从简单的直线和矩形,到复杂的路径和多边形。下面是一些常用的 SVG 基本图形:

  1. 直线 <line>
  2. 矩形 <rect>
  3. 圆形 <circle>
  4. 椭圆 <ellipse>
  5. 多边形 <polygon>
  6. 路径 <path>
SVG 动画

SVG 具有轻量且可伸缩的特点,这意味着您可以轻松地为 SVG 图像创建动画。您可以使用 CSS 还可以使用 JavaScript 来创建动画。下面是一个简单的 SVG 动画示例:

<!DOCTYPE html>
<html>
<body>

<h2>此处演示SVG图形脉冲样式</h2>

<svg width="200" height="200">
  <rect x="10" y="10" width="30" height="30" stroke="purple" fill="white">
    <animate attributeName="fill" from="white" to="purple" dur="1s" repeatCount="indefinite"/>
    <animate attributeName="x" from="10" to="160" dur="1s" repeatCount="indefinite"/>
    <animate attributeName="y" from="10" to="160" dur="1s" repeatCount="indefinite"/>
    <animate attributeName="width" from="30" to="120" dur="1s" repeatCount="indefinite"/>
    <animate attributeName="height" from="30" to="120" dur="1s" repeatCount="indefinite"/>
  </rect>
</svg> 

</body>
</html>

代码解释如下:

  • <animate> 标签定义动画效果。
  • attributeName 属性定义要更改的属性。
  • from 属性定义属性的起始值。
  • to 属性定义属性的结束值。
  • dur 定义动画的持续时间。
  • repeatCount 属性定义动画的重复次数。
高级 SVG 技术

除了基本的图形和动画,SVG 还包含许多高级功能,如滤镜、剪切路径、SVG 混合模式、SVG 滤镜效果等。这些高级功能需要您有更高的专业技能,但它们可以帮助您创建出更酷、更令人印象深刻的效果。

结论

本 SVG 教程介绍了 SVG 的基础知识、优点、坐标系统、基本图形、动画以及高级技巧等。我们希望这些内容可以帮助您更好地理解和运用 SVG。如果您对 SVG 还有其他问题,我们建议您参考 SVG 的官方文档以及各种 SVG 的开源库,以便更好地探索这个强大的图形格式。