SVG入门

131 阅读3分钟

什么是SVG

  • SVG 意为可缩放矢量图形(Scalable Vector Graphics)。
  • 它使用 XML 格式定义图像。
  • SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失。
  • SVG 是万维网联盟的标准。
  • SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体。

总的来说,SVG就是一个由XML定义的一个文件,由于是矢量图形,所以它的图形质量非常高。

SVG的基本形状

矩形 rect

  • width: 矩形的宽度
  • height: 矩形的高度
  • style: 矩形的样式
  • fill: 填充颜色
  • stroke-width: 边框宽度
  • stroke: 边框颜色
  • rx: 圆角半径
  • ry: 圆角半径
圆形 circle

  • cx: 圆心的x坐标
  • cy: 圆心的y坐标
  • r: 圆的半径
椭圆 ellipse

  • cx: 椭圆中心的x坐标
  • cy: 椭圆中心的y坐标
  • rx: 椭圆的x半径
  • ry: 椭圆的y半径
线条 line

  • x1: 线条起点x坐标
  • y1: 线条起点y坐标
  • x2: 线条终点x坐标
  • y2: 线条终点y坐标
多边形 polygon

  • points: 多边形顶点坐标
  • points第一个坐标为多边形起点坐标,后续坐标为多边形顶点坐标 第一个值是x坐标,第二个值是y坐标
折线 polyline

  • points: 折线顶点坐标
  • points第一个坐标为折线起点坐标,后续坐标为折线顶点坐标 第一个值是x坐标,第二个值是y坐标
polygon与polyline的区别
  • polygon:用于创建包含至少三个边的图形,形状是封闭的
  • polyline:用于绘制多段线,形状是开放的,起点和终点不会自动连接

SVG的渲染效果-纵向线性渐变 linearGradient

  • x1: 渐变起始点x坐标
  • y1: 渐变起始点y坐标
  • x2: 渐变结束点x坐标
  • y2: 渐变结束点y坐标
  • cx: 渐变中心x坐标
  • cy: 渐变中心y坐标

如果省略 cx 和 cy,圆的中心会被设置为 (0, 0)

SVG的渲染效果-横向线性渐变 linearGradient

SVG的渲染效果-放射渐变 radialGradient

  • fx:渐变起始点x坐标
  • fy:渐变起始点y坐标
SVG应用--进度条

  • stroke-dasharray: 渐变线段长度 间隔长度
  • stroke-linecap: 圆角
  • 第一个值:(deg / 360) * (2 * π * r)
  • 第二个值:2 * π * r
  • 因为默认是从 90 度的位置开始的, 我们希望从 0 度开始, 所以我们让图形旋转 -90 度
  • transform="rotate(-90 100 100)"
  • text-anchor="middle" 文字居中
  • text-anchor属性: start | middle | end
  • dy="5" 文字向下偏移 5 像素

stroke-dasharray为一个参数时: 其实是表示虚线长度和每段虚线之间的间距如:stroke-dasharray='10'表示:虚线长10,间距10,然后重复 虚线长10,间距10 两个参数或者多个参数时:一个表示长度,一个表示间距如:stroke-dasharray='10,5'表示:虚线长10,间距5,然后重复 虚线长10,间距5如:stroke-dasharray ='20,10,5'表示:虚线长20,间距10,虚线长5,接着是间距20,虚线10,间距5,之后开始如此循环

借鉴文档 juejin.cn/post/727086…

blog.csdn.net/qq_40289557…

SVG应用--进度条

path:定义路径数据,用于绘制路径。路径数据由一系列命令和参数组成,每个命令由一个字母表示,后跟一个或多个参数。 例如,

  • M表示移动到指定位置,
  • L表示绘制直线到指定位置,
  • C表示绘制贝塞尔曲线到指定位置,
  • Z表示关闭路径,即从当前点绘制一条直线到路径的起点,形成一个闭合的图形。
  • Q表示绘制二次贝塞尔曲线到指定位置,T表示绘制平滑的二次贝塞尔曲线到指定位置,
  • A表示绘制椭圆弧线到指定位置等。
其他

svg编辑器:svg.wxeditor.com/

svg文档

www.w3school.com.cn/svg/index.a…

cloud.tencent.com/developer/d…