[TOC]
# 插件-ani 动画功能
这个功能,非常强大- -.是基于css3的一套js动画库,可以和CSS3属性,SVG,DOM元素和JS对象一起工作,制作出各种高性能,平滑过渡的动画效果。
## 使用方法
### HTML结构
**以动画两个div元素为例,HTML结构如下:**
```html
<article>
<div class="blue"></div>
<div class="green"></div>
</article>
```
### 初始化插件
**通过v.ani()方法来构造一个对象实例,以json对象的方式传入需要的参数:**
```html
var myAnimation = v.ani({
targets: ['.blue', '.green'],
translateX: '13rem',
rotate: 180,
borderRadius: 8,
duration: 2000,
loop: true
});
```
## 配置参数
|参数 | 默认值 | 取值|
|--|--|--|
|delay | 0 | number, function (el, index, total)|
|duration | 1000 | number, function (el, index, total)|
|autoplay | true | boolean|
|loop | false | number, boolean|
|direction | 'normal' | 'normal', 'reverse', 'alternate'|
|easing | 'easeOutElastic' | console log anime.easings to get the complete functions list|
|elasticity | 400 | number (higher is stronger)|
|round | false | number, boolean|
|begin | undefined | function (animation)|
|update | undefined | function (animation)|
|complete | undefined | function (animation)|
## 应用举例
### 指定动画参数
**参数可以使用json对象的方式传入,可设置的动画参数有:**
* value (必须)
* delay
* duration
* easing
例如:
```javascript
v.ani({
targets: 'div',
translateX: '13rem',
rotate: {
value: 180,
duration: 1500,
easing: 'easeInOutQuad'
},
scale: {
value: 2,
delay: 150,
duration: 850,
easing: 'easeInOutExpo',
},
direction: 'alternate',
loop: true
});
```
### 多个timing时间函数值
动画延迟和动画的持续时间可以使用函数来各自指定目标元素。函数的参数如下:
|参数位置| 参数名称| 描述|
|--|--|--|
|1| target| 目标元素|
|2| index| 目标元素的索引(从0开始)|
|3| length of targets| 目标的总数(从0开始计数)|
例如:
```javascript
v.ani({
targets: 'div',
translateX: '13.5rem',
scale: [.75, .9],
delay: function(el, index) {
return index * 80;
},
direction: 'alternate',
loop: true
});
```
### 有效的动画属性列表
任何属性只要包含一个以上的数值属性,就可以执行动画效果。
|类型 |示例|
|--|--|
|CSS Properties|`width`, `borderRadius`, `background-color`|
|Individual transforms|`translateX`, `rotate`, `scaleY`|
|SVG attributes|`d`, `rx`, `transform`|
|DOM attributes|`value`, `volume`|
|Object properties|任何包含一个以上的对象属性|
### 单个属性值
定义结束动画的值。
|类型|示例|描述|
|--|--|--|
|String|'100rem'|推荐使用。强制动画使用指定的值,但是不转换单位。|
|Number|100|使用可能的默认单位。|
例如:
```javascript
v.ani({
targets: 'div',
translateX: '3rem', // Will translate the div from '0rem' to '3rem'
width: '100', // Will be converted to '100px' because the width is '20px' in the CSS
});
```
### From To values
定义动画的开始和结束值。
```javascript
anime({
targets: 'div',
translateX: [50, 250] // Will start at 50px and end at 250px
});
```
### 指定目标值
可以通过函数来分别指定各个目标对象的属性值。可用的函数参数如下:
|参数位置|参数名称|描述|
|--|--|--|
|1|target|目标元素|
|2|index|目标元素索引(从0开始)|
例如:
```javascript
v.ani({
targets: 'div',
translateX: function(el, index) {
return v.ani.random(50, 100); // Will set a random value from 50 to 100 to each divs
}
});
```
```javascript
v.ani({
targets: 'path',
strokeDashoffset: function(el) {
var pathLength = el.getTotalLength();
return [pathLength, 0]; // Will use the exact path length for each targeted path elements
}
});
```
### 动画播放控制
可以对动画进行播放、暂停、重播等控制。
|名称|参数|描述|
|--|--|--|
|.play()|动画参数对象|播放动画|
|.pause()|无|暂停动画播放|
|.restart()|动画参数对象|重置动画|
|.seek()|百分比数或对象如:{time: 1250}|跳转到指定动画帧|
例如:
```javascript
var myAnimation = v.ani({
targets: 'div',
translateX: 100,
autoplay: false
});
```
myAnimation.play(); // Manually play the animation
### 动画运动路径
使用`v.ani.path()`方法使元素沿SVG路径进行动画。
|名称|描述|
|--|--|
|translateX|路径X轴|
|translateY|路径Y轴|
|rotate|指定角度|
例如:
```javascript
var myPath = v.ani.path('path');
v.ani({
targets: 'div',
translateX: myPath,
translateY: myPath,
rotate: myPath
});
```
### 辅助方法
v.ani.list:返回当前所有的活动动画对象。
```javascript
v.ani.list;
```
v.ani.speed = x:修改所有动的速度(从0-1)。
```javascript
v.ani.speed = .5;
```
v.ani.easings:返回动画的easing函数列表。
```javascript
v.ani.easings
```
v.ani.remove(target):从动画中移除一个或多个目标元素。
```javascript
v.ani.remove('.item-2');
```
v.ani.getValue(target, property):从一个元素中获取当前的可用值。
```javascript
v.ani.getValue('div', 'translateX');
```
v.ani.random(x,y):在两个数之间生成一个随机数。
```javascript
v.ani.random(10, 40);
```
- 前端篇
- 常用知识点
- 表单处理
- 前后端分离
- 提供模板渲染工具
- 页面优化
- css3动画部分
- 前端工程与模块化框架
- 服务器XML标签用法
- 微信JSSDK
- 小技巧
- 纯CSS实现自适应正方形
- 通用媒体查询
- css 黑科技
- H5性能优化方案
- 10个最常见的 HTML5
- 常见坑
- 资源收集
- 前端组件化开发实践
- 应用秒开计划
- AJAX API部分
- 静态资源处理优化
- 后端篇
- 微信对接与管理
- 微信消息处理
- API插件开发
- Plugin开发
- 后端插件开发
- 组件开发
- XML标签开发
- RESTFUL设计
- Admin GUI
- 设计篇
- 设计规范
- 微信开发库v.js
- 使用方法
- 微信JSSDK集成
- 调试面板使用
- 插件-http功能
- 插件-layer弹出层
- 插件-music 音乐播放器
- 插件-store 本地存储
- 插件 emitter 事件管理器
- 插件-shake 摇动功能
- 插件-lazyload 延迟加载
- 插件-t 模板渲染
- 插件-ani 动画功能
- 插件-is 类型侦测器
- 插件-ease 缓动函数库
- 插件-os 设备检测
- 插件 $ 类Jquery插件
- 插件-md5 散列计算
- 插件-svg动画loading
- 后台页面成功GUI
- 列表渲染List
- 表单生成Config
- 树状列表Tree
- 排序操作Sort
- Js 风格指南
- Vuep
- 内置动画库
- 组件库
- 内置插件库
- PSD自动切图