SVG 心得

128 阅读3分钟

SVG 讲解链接

  1. SVG 作为标签使用(), 可以使用 css 或 js 通过class 和 id 控制.

    SVG作为图像使用: img 标签 和 css背景图

    SVG作为应用程序: object标签 和 iframe标签

  2. 坐标系统

    widthheight viewport 视口大小

    viewBox可视区: min-xmin-ywidthheight

    preserveAspectRatio:控制缩放图形相对视口的对齐方式

    align:x 轴 xMin 左 xMid 中 xMax 右。 y 轴 yMin 上 yMid 中 yMax 下 。9种组合

    meetOrSlice: meet 宽高比将会被保留,尽可能的放大填满 或 slice宽高比将会被保留,比例小的方向放大填满

    设置 viewBox 和 preserveAspectRatio 控制 图形的位置

  3. line 线 rect 矩形 circle 圆 ellipse 椭圆 polygon 多边形 polyline 折线 path 路径(直线 折线 二次贝塞尔曲线 三次贝塞尔曲线 圆弧)

  4. SVG中,样式有4种加载方式

    style属性 defs内部设置样式 css选择器来设置样式 属性的形式设置样式(优先级最低)

    g元素 元素的一个组合

    use元素 把指定的代码块在指定的位置再画一遍。xlink:href属性设置要复制的元素,和css选择器中的id选择器相似

    defs元素 用于定义复用的元素,在defs内的元素并不会被显示,而是作为模板供其他地方使用

    image元素 xlink:href=“xxx” 用来加载一个完整的SVG文件 或 图片(相对链接 或 base64编码)

  5. transform属性,控制图形的坐标变换。css3中变换是以元素的中心点变换,SVG中中的transform是相对于画布的左上角计算的

    translate 位移 rotate 旋转 scale缩放 matrix 矩阵变换

  6. path命令是区分大小写的。大写表示绝对坐标,小写表示相对坐标

    m 移动 l 连接 v 垂直线 h 水平线 z 闭合 q 二次贝塞尔曲线 c 三次贝塞尔曲线 a 圆弧曲线

  7. 图案填充 patterns元素. 渐变色填充 linearGradient 元素 radialGradient 元素

    fill="url(#xxx)"

  8. 文本

    <text> 元素在画布中创建文本, <tspan>元素进行多行文本创建, <textPath> xlink:href=“xxx” 让文本在指定的路径上排列

    示例:### 纵向文本 ### 设置一行文本不同样式(旋转并字间距不一样)

  9. 裁剪和蒙版

    裁剪 使用clipPath元素在defs中创建裁剪区域。区域内的部分显示,区域外的隐藏。

    style="clip-path: url(#xxx)"

    使用mask元素创建蒙版 蒙版*黑色代表不可见(opacity: 0)*白色代表可见(opacity: 100%)

    mask="url(#xxx)"

    示例:图片渐变

  10. 滤镜使用 <filter> 标签

    filter="url(#xxx)"

  11. 动画

    1)set 实现延迟功能。在规定时间之后,修改某个属性的值。 animate 实现单属性的过渡动画。 animateTransform 用于实现transform变换动画。 animateMotion 实现路径动画,让SVG各个图形,沿着指定路径运动

    2)CSS操作SVG动画

    #cir { fill: gold; } #cir:hover { fill: greenyellow; }
    

    3)路径描边动画

    描边动画就是使用stroke-dasharraystroke-dashoffset属性来完成

    stroke-dasharray 定义 虚边总长路径的长度 stroke-dashoffset 控制虚边偏移量, 展示路径

    4)GSAP 制作动画,官方文档

    GSAP 为 静态SVG添加动画,可以 绘制闪烁边框

    5)形变动画,animate 控制 path 中的 d. begin="indefinite" 动画无限期等待, js dom元素.beginElement() 控制动画开始