SVG 学习

954 阅读3分钟

形状

  • 矩形 <rect>
  • 圆形 <circle>
  • 椭圆 <ellipse>
  • 线 <line>
  • 折线 <polyline>
  • 多边形 <polygon>
  • 路径 <path>

属性

  • with 和 height 定义宽高。
  • style 定义 CSS 属性。
    • style 中 fill 用来定义填充色,fill-opacity 定义填充透明度。
    • stroke 定义边框颜色,stroke-witdth 定义边框宽度,stroke-opacity 定义边框(轮廓)透明度
    • opacity 定义整个元素的透明度。
  • x 和 y 用来定义位置,为相对父元素 svg 的位置。
  • rx 和 ry 矩形时用来定义圆角,椭圆时用来定义水平半径和垂直半径。
  • cx 和 cy 定义圆点的 x 和 y 坐标。如果省略,圆的中心会被设置为(0,0)。
  • r 定义圆的半径。
  • x1 和 y1 是线的起始坐标。
  • x2 和 y2 是线的结束坐标。
  • points 定义多边形每个角的 x 和 y 坐标 (角和角直接用空格隔开,x 和 y 坐标用逗号隔开)
  • fill-rule 制定使用哪一种算法判断画布上的某区域是否属于该图形“内部”。如果值为 nonzero 要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点情况。从0开始计数,路径从左向右穿过射线则计数加1,从右向左穿过射线则计数减1。得出计数结果后,如果结果是0,则认为点在图形外部,否则认为在内部。如果值为 evenodd 要判断一个点是否在图形内,从该点作任意方向的一条射线,然后检测射线与图形路径的交点的数量。如果结果是奇数则认为点在内部,是偶数则认为点在外部。

路径 <path>

  • M = moveto 移动到 (x y)+
  • L = lineto 画线到 (x y)+
  • H = horizontal lineto 水平线到 x+
  • V = vertical lineto 垂直线到 y+
  • C = curveto 三次贝塞尔曲线到 (x1 y1, x2 y2, x y)+
  • S = smooth curve 光滑三次贝塞尔曲线到 (x2 y2, x y)+
  • Q = quadratic Bézier curve 二次贝塞尔曲线到 (x1 y1, x y)+
  • T = smooth quadratic Bézier curveto 光滑二次贝塞尔曲线到 (x y)+
  • A = ellptical Arc 椭圆弧 (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
  • Z = closepath 关闭路径
    注意:以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位

文本 <text>

  • transform rotate 参数为:旋转角度 旋转点 x 和 y 坐标。
  • <defs> 引用的元素容器。
  • <a> 用于设置链接。

stroke 属性

  • stroke 定义一条线,文本或者元素轮廓颜色
  • stroke-width 定义一条线,文本或者元素轮廓厚度
  • stroke-linecap 定义不同类型的开发路径的终结
  • stroke-dasharray 用于创建虚线

滤镜

  • feBlend 与图像相结合的滤镜
  • feColorMatrix 用于彩色滤光片转换
  • feComponentTransfer
  • feComposite
  • feConvolveMatrix
  • feDiffuseLighting
  • feDisplacementMap
  • feFlood
  • feGaussianBlur
  • feImage
  • feMerge
  • feMorphology
  • feOffset 过滤阴影
  • feSpecularLighting
  • feTile
  • feTurbulence
  • feDistantLight 用于照明过滤
  • fePointLight 用于照明过滤
  • feSpotLight 用于照明过滤

*** SVG 滤镜定义都在<defs> 中。<filter> 用来定义 SVG 滤镜,使用必须的 ID 属性引用 *** (这么多滤镜效果,这是要一个个自己试吗……)