1 SVG 阴影
1.1 <defs>
SVG 允许我们定义以后需要重复使用的图形元素。建议把所有需要再次使用的引用元素定义在 <defs> 元素里面。这样做可以增加 SVG 内容的易读性和无障碍。在 <defs> 元素中定义的图形元素不会直接呈现。可以在视图的任意地方利用 <use> 元素呈现这些元素。
1.2 <filter>
<filter> 元素作用是作为原子滤镜操作的容器。它不能直接呈现。可以利用目标 SVG 元素上的 filter
属性引用一个滤镜。
1.3 <feOffset> 和 <feBlend>
<feOffset> 将输入图像作为一个整体,通过属性 dx 和属性 dy 的值指定一个偏移量。
<feBlend> 滤镜把两个对象组合在一起,使它们受特定的混合模式控制。类似于图像编辑软件中混合两个图层。
将 <feOffset> 和 <feBlend> 结合在一起,即可创建图形的阴影效果。
1.4 <feGaussianBlur>
<feGaussianBlur> 滤镜可以对输入图像进行高斯模糊,并通过属性 stdDeviation 指定偏移的像素数量。
1.5 <feColorMatrix>
<feColorMatrix> 滤镜基于转换矩阵对颜色进行变换。每一像素的颜色值(一个表示为 [红,绿,蓝,透明度] 的矢量)都经过矩阵乘法计算出新的颜色。
2 SVG 渐变
渐变是一种从一种颜色到另一种颜色的平滑过渡。另外,可以把多个颜色的过渡应用到同一个元素上。
SVG 渐变主要有两种类型:
-
Linear:线性的。
-
Radial:径向的。
2.1 SVG 线性渐变:<linearGradient>
<linearGradient> 元素用来定义线性渐变,用于图形元素的填充或描边。
线性渐变可以定义为水平、垂直或径向渐变:
-
当 y1 和 y2 相等且 x1 和 x2 不同时,将创建水平渐变。
-
当 x1 和 x2 相等且 y1 和 y2 不同时,将创建垂直渐变。
-
当 x1 和 x2 不同且 y1 和 y2 不同时,将创建径向渐变。
一个渐变上的颜色坡度,是用 <stop> 元素定义的。
2.2 SVG 径向渐变:<radialGradient>
<radialGradient> 元素用来定义径向渐变,以对图形元素进行填充或描边。
3 SVG 动画
SVG 中提供三种常用动画标记:
SVG 动画使用方式:
-
创建动画,告诉动画标记哪个元素需要执行动画。
-
创建元素,在元素中说明需要执行什么动画。
4.1 SVG动画常用属性
3.2 <animate>
利用 <animate> 实现一个点击触发无限往返效果。
3.3 <animateTransform>
利用 <animateTransform> 实现一个点击触发水平移动效果。
利用 <animateTransform> 实现一个点击触发图形旋转效果。
4.4 <animateMotion>
利用 <animateMotion> 实现一个点击触发矩形块沿路径移动的效果。
<path> 元素是用来定义形状的通用元素。所有的基本形状都可以用 <path> 元素来创建。
M0 0
是指移动到 0 0
的坐标位置,M 是 “Move to” 的意思。
C0 300 300 300 300 0
是指贝塞尔曲线,0 300
是起点坐标,300 300
是中间点坐标,300 0
是终点坐标。