js-components-svg-animate.md 5.9 KB
Newer Older
Z
zengyawen 已提交
1
# animate
Z
zengyawen 已提交
2 3


Z
zengyawen 已提交
4 5 6 7
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 该组件从API version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

设置svg组件的属性动画。
Z
zengyawen 已提交
8

Z
zengyawen 已提交
9
## 权限列表
Z
zengyawen 已提交
10 11 12



Z
zengyawen 已提交
13 14

## 子组件
Z
zengyawen 已提交
15 16 17 18

不支持。


Z
zengyawen 已提交
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
## 属性

| 名称 | 类型 | 默认值 | 必填 | 描述 |
| -------- | -------- | -------- | -------- | -------- |
| id | string | - | 否 | 组件的唯一标识。 |
| attributeName | string | - | 否 | 设置需要进行动效的属性名。 |
| begin | &lt;time&gt; | 0 | 否 | 设置动效的延迟时间。<br/>支持输入ms(毫秒)、s(秒)、m(分),默认为s(秒),其他格式不支持 |
| dur | &lt;time&gt; | 0 | 否 | 设置动效持续时间,如果dur没设置,按照end-begin的结果作为持续时间,小于等于0时,动效不触发。<br/>支持输入ms(毫秒)、s(秒)、m(分),默认为s(秒),其他格式不支持 |
| end | &lt;time&gt; | 0 | 否 | 设置动效多久时间后结束。支持输入ms(毫秒)、s(秒)、m(分),默认为s(秒),其他格式不支持 |
| repeatCount | &lt;number&nbsp;\|&nbsp;indefinite&gt; | 1 | 否 | 设置动画播放的次数,默认无限次播放(indefinite),可通过设置为数值1仅播放一次。 |
| fill | &lt;freeze&nbsp;\|&nbsp;remove&gt; | remove | 否 | 设置动画结束时的状态。 |
| calcMode | &lt;discrete&nbsp;\|&nbsp;linear&nbsp;\|&nbsp;paced&nbsp;\|&nbsp;spline&gt; | linear | 否 | 设置动画的插值模式。<br/>discrete:阶跃,from值直接跳转到to的值;<br/>linear:线性;<br/>paced:线性,设置此项后keyTimes和keyPoints值无效<br/>spline:自定义贝塞尔曲线,spline点定义在keyTimes属性中,每个时间间隔控制点由keySplines定义 |
| keyTimes | string | - | 否 | 设置关键帧动画的开始时间,值为0~1之间的数值用分号隔开,比如0;0.3;0.8;1。keyTimes、keySplines、values组合设置关键帧动画。keyTimes和values的个数保持一致。keySplines个数为keyTimes个数减一 |
| keySplines | string | - | 否 | 与keyTimes相关联的一组贝塞尔控制点。定义每个关键帧的贝塞尔曲线,曲线之间用分号隔开。曲线内的两个控制掉格式为x1&nbsp;y1&nbsp;x2&nbsp;y2。比如0.5&nbsp;0&nbsp;0.5&nbsp;1;&nbsp;0.5&nbsp;0&nbsp;0.5&nbsp;1;0.5&nbsp;0&nbsp;0.5&nbsp;1 |
| by | number | - | 否 | 在动画中对某一指定属性,添加相对偏移值,from默认为原属性值。 |
| from | string | - | 否 | 设置需要进行动画的属性的开始值。<br/>如果已经设置了values属性,则from失效。 |
| to | string | - | 否 | 设置需要进行动画的属性的结束值。<br/>如果已经设置了values属性,则to都失效。 |
| values | string | - | 否 | 设置一组动画的变化值。格式为value1;value2;value3。 |

Z
zengyawen 已提交
38

Z
zengyawen 已提交
39
## 示例
Z
zengyawen 已提交
40 41 42 43 44 45 46 47 48 49 50 51 52

```
<!-- xxx.hml -->
<div class="container">
  <svg width="400" height="400">
    <rect x="20" y="20" width="100" height="100" fill="red" rx="0" ry="20">
      <animate attributeName="rx" values="0;10;30;0" keyTimes="0;0.25;0.75;1" keySplines="0.5 0 0.5 1; 0.5 0 0.5 1; 0.5 0 0.5 1" dur="1000" repeatCount="indefinite">
      </animate>
    </rect>
  </svg>
</div>
```

Z
zengyawen 已提交
53 54 55

![zh-cn_image_0000001173324703](figures/zh-cn_image_0000001173324703.gif)

Z
zengyawen 已提交
56 57 58 59 60 61 62 63 64 65 66 67 68

```
<!-- xxx.hml -->
<div class="container">
  <svg width="400" height="400">
    <rect x="20" y="20" width="100" height="100" fill="red" rx="0" ry="20">
      <animate attributeName="fill" from="red" to="blue" dur="1000" repeatCount="indefinite"></animate>
      <animate attributeName="height" from="50" to="150" begin="500" end="1000" repeatCount="indefinite">  </animate>
    </rect>
  </svg>
</div>
```

Z
zengyawen 已提交
69 70 71

![zh-cn_image_0000001167662852](figures/zh-cn_image_0000001167662852.gif)

Z
zengyawen 已提交
72 73 74 75 76 77 78 79 80 81 82 83

```
<!-- xxx.hml -->
<div class="container">
  <svg width="400" height="400">
    <rect x="20" y="20" width="100" height="100" fill="red" rx="0" ry="20">
      <animate attributeName="rx" values="0;30" dur="1000" repeatCount="10" fill="freeze" calcMode="linear"></animate>
    </rect>
  </svg>
</div>
```

Z
zengyawen 已提交
84 85 86

![zh-cn_image_0000001127284938](figures/zh-cn_image_0000001127284938.gif)

Z
zengyawen 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

```
<!-- xxx.hml -->
<div class="container">
  <svg fill="white" width="600" height="600">
    <circle cx="60" cy="70" r="50" stroke-width="4" fill="white" stroke="blue">
      <animate attributeName="r" from="0" to="50" dur="2000" repeatCount="indefinite"></animate>
      <animate attributeName="cx" from="60" to="200" dur="2000" repeatCount="indefinite"></animate>
    </circle>
    <circle cx="60" cy="200" r="50" stroke-width="4" fill="white" stroke="blue">
      <animate attributeName="stroke-width" from="4" to="10" calcMode="discrete" dur="2000" repeatCount="indefinite"></animate>
      <animate attributeName="stroke" values="red;blue" dur="2000" repeatCount="indefinite"></animate>
    </circle>
    <circle cx="180" cy="200" r="50" stroke-width="10" stroke="red" stroke-dasharray="60 10" stroke-dashoffset="3">
      <animate attributeName="stroke-opacity" from="1.0" to="0.5" dur="2000" repeatCount="indefinite"></animate>
      <animate attributeName="stroke-dashoffset" values="30;0;30" dur="500" repeatCount="indefinite"></animate>
     <animate attributeName="cx" from="180" to="400" dur="2000" repeatCount="indefinite"></animate>
    </circle>
    <circle cx="180" cy="200" r="5" fill="blue">
      <animate attributeName="cx" from="180" to="400" dur="2000" repeatCount="indefinite"></animate>
    </circle>
    <circle cx="60" cy="380" r="50"  fill="blue">
      <animate attributeName="fill" values="red;blue" dur="2000" repeatCount="indefinite"></animate>
    </circle>
    <circle cx="180" cy="380" r="50"  fill="blue">
      <animate attributeName="fill-opacity" from="1.0" to="0.5" dur="2000" repeatCount="indefinite"></animate>
    </circle>
    </svg>
</div>
```


Z
zengyawen 已提交
119
![zh-cn_image_0000001127125126](figures/zh-cn_image_0000001127125126.gif)