跳到主要内容

SVG 教程

欢迎学习 SVG(可缩放矢量图形)!本教程将带你从零基础开始,全面掌握 SVG 的核心知识和实战技能。

什么是 SVG?

SVG(Scalable Vector Graphics,可缩放矢量图形)是一种基于 XML 的矢量图形格式,用于描述二维图形。与 JPEG、PNG 等位图格式不同,SVG 使用数学公式来描述图形,这意味着它可以无限放大而不失真。

SVG 的核心特点

矢量特性:SVG 图形由数学公式定义,无论放大多少倍都保持清晰锐利。这使得 SVG 非常适合用于图标、logo、图表等需要在不同尺寸下显示的场景。

基于 XML:SVG 文件本质上是 XML 文档,可以用任何文本编辑器打开和编辑。每个图形元素都是一个 XML 标签,这使得 SVG 易于理解、修改和程序化生成。

Web 标准:SVG 由 W3C(万维网联盟)制定标准,所有现代浏览器都原生支持。SVG 可以直接嵌入 HTML 中,与 CSS 和 JavaScript 无缝协作。

可访问性:SVG 支持文本内容、标题、描述等元素,可以被屏幕阅读器识别,有利于搜索引擎优化和无障碍访问。

SVG 与位图的区别

特性SVG(矢量图)位图(JPEG/PNG)
缩放无限放大不失真放大后模糊
文件大小简单图形很小与分辨率相关
编辑可直接修改代码需要图像编辑软件
动画原生支持动画需要 GIF 或视频
适用场景图标、logo、图表照片、复杂图像

SVG 能做什么?

绘制图形:创建矩形、圆形、椭圆、线条、多边形等基本形状,以及通过路径绘制任意复杂图形。

<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="10" width="80" height="80" fill="#4A90D9"/>
<circle cx="150" cy="50" r="40" fill="#E74C3C"/>
</svg>

渐变填充:支持线性渐变和径向渐变,可以创建丰富的视觉效果。

文本排版:支持文本渲染,可以将文本沿路径排列,实现创意排版效果。

图形变换:支持平移、旋转、缩放、斜切等变换操作。

滤镜效果:内置模糊、阴影、光照等滤镜效果,无需依赖外部图像处理。

动画效果:支持基于 SMIL 的声明式动画,也可以通过 CSS 和 JavaScript 实现动画。

交互功能:可以响应鼠标事件,创建可交互的图形界面。

SVG 的应用场景

网页图标:网站和应用的图标系统,支持多主题、多尺寸。

数据可视化:图表、地图、流程图等数据展示。

用户界面:按钮、进度条、仪表盘等 UI 组件。

动画效果:加载动画、过渡效果、交互动画。

响应式设计:自适应各种屏幕尺寸的图形元素。

打印输出:高分辨率打印,保持图形清晰度。

教程结构

基础部分

样式部分

  • 渐变 - 线性渐变和径向渐变
  • 图案 - 使用图案填充
  • 文本 - SVG 文本处理

进阶部分

高级部分

参考资料

学习建议

动手实践:每学一个知识点,都要亲自编写代码并在浏览器中查看效果。SVG 是所见即所得的,修改代码立即能看到变化。

使用开发者工具:浏览器开发者工具(F12)可以检查和修改 SVG 元素,是学习和调试的利器。

参考官方文档MDN SVG 文档 是最权威的参考资料,遇到问题优先查阅。

循序渐进:从基本形状开始,逐步掌握路径、渐变、变换等进阶内容,最后学习动画和交互。

结合实际项目:尝试用 SVG 实现实际项目中的图标、图表等需求,在实践中巩固知识。

参考资源

准备好开始学习了吗?让我们从基本形状开始你的 SVG 学习之旅!