📅  最后修改于: 2023-12-03 14:47:46.737000             🧑  作者: Mango
SVG(Scalable Vector Graphics)是一种用于创建矢量图形的XML语言。SVG提供了丰富的元素和属性,其中一个非常有用的元素是<animate>
,用于创建动画效果。
线性动画使用固定的时间间隔和固定的速度来产生线性效果。例如,以下代码将产生从0到100的线性动画:
<rect x="50" y="50" width="100" height="100" fill="blue">
<animate attributeName="x" from="0" to="100" dur="2s" />
</rect>
非线性动画使用贝塞尔曲线来产生加速和减速等效果。贝塞尔曲线由控制点和起始和结束点组成。以下代码将创建一个向下加速的矩形动画:
<rect x="50" y="0" width="100" height="100" fill="blue">
<animate attributeName="y" from="0" to="300" dur="2s" begin="0s" calcMode="spline"
keySplines="0 .75 .25 1" />
</rect>
路径动画将对象沿着指定的路径进行移动。以下代码将创建一个从左到右的矩形路径动画:
<path id="path" d="M 70 50 L 170 50" stroke="black" stroke-width="2" fill="none" />
<rect width="40" height="40" fill="blue">
<animateMotion dur="3s" repeatCount="indefinite">
<mpath xlink:href="#path" />
</animateMotion>
</rect>
颜色动画将对象的颜色从一个颜色值渐变到另一个颜色值。以下代码将对矩形进行颜色渐变:
<rect x="50" y="50" width="100" height="100">
<animate attributeName="fill" from="blue" to="red" dur="2s" />
</rect>
<animate>
元素的属性用于指定动画效果,其中一些属性包括:
以下代码将创建一个通过非线性贝塞尔曲线加速的圆形动画:
<circle cx="50" cy="50" r="40" fill="blue">
<animate attributeName="cy" from="50" to="250" dur="2s" calcMode="spline"
keySplines="0 .6 .4 1" repeatCount="indefinite" />
</circle>
SVG的<animate>
元素为程序员提供了很多有用的动画特效。可以使用线性,非线性,路径和颜色动画来创建各种动态效果。了解<animate>
元素的属性和可选值将有助于更好地利用SVG动画功能。