Skip to content
目录

动画简介

现阶段,动画支持位移动画、缩放动画、旋转动画、透明度动画、背景色动画、宽度动画、高度动画。

Hummer 动画支持两种动画方式,分别为 Basic Animation Frame Animation,为了满足写次序动画的需求,Tenon 侧增加了 Step Animation

Tenon 的动画,是通过动画对象描述的,主要分为三种动画对象:

动画

具体的动画样式细节,可以参考 Animation Style Object描述。

Animation Style Object

属性名介绍类型备注示例
position位移动画Object
<PositionObject>
PositionObject
可见以下表格
position: {x: '100hm', y: 0}
scale缩放动画Numberx轴和y轴同时变化scale: 1.1
scaleX缩放动画(x轴)Number仅x轴变化scaleX: 1.1
scaleY缩放动画(y轴)Number仅y轴变化scale: 1.1
rotationX旋转动画(x轴)Number绕x轴旋转(单位:度)rotationX: 90
rotationY旋转动画(y轴)Number绕y轴旋转(单位:度)rotationY: 90
rotationZ旋转动画(z轴)Number绕z轴旋转(单位:度)rotationY: 90
opacity透明度动画Number透明度变化,取值 0到1(0-全透明,1-不透明)opacity: 0.8
backgroundColor背景色动画Color背景色变化backgroundColor: #ff00ff
width宽度动画Length宽度变化width: 100hm
height高度动画Length高度变化height: 100hm

Length 长度单位,具体可参考 CSS单位

Position Object

属性名介绍类型备注
xx轴位移string | number支持 hm、rem单位
yy轴位移string | number支持 hm、rem单位

用法


Tenon Vue

Tenon Vue 中动画通过 v-animation指令来实现,将动画对象传递给 v-animation指令即可。

例如: <view v-animation="animationObject"></view>

TIP

动画对象可参考基础动画、关键帧动画、次序动画的实现。

用法


Tenon React

Tenon React 支持两种动画方式,分别是属性传递和Hook的方式。

Plan1. 属性传递

Tenon React 中动画通过 animation属性来实现,将动画对象传递给 animation属性即可。 例如: <view animation={animationObject}></view>

TIP

  • animationObject 动画对象可参考基础动画、关键帧动画、次序动画的实现。

  • 该方式,组件创建后会立即执行动画。

Plan2. useAnimation Hook

通过useAnimation钩子,可以异步操作动画执行.

使用用例如下:

javascript
import {useAnimation} from '@hummer/tenon-react';

function SyncAnimation(){
  let [animationRef, startAnimation] = useAnimation(animationObject)
  return (
    <>
      <view class="box" ref={animationRef}></view>
      <text class="btn" onTap={() => startAnimation()}>开始动画</text>
    </>
  )
}

animationRef 引用需要绑定到需要执行动画的视图上,startAnimation 方法控制何时开始执行动画。

TIP

animationObject 动画对象可参考基础动画、关键帧动画、次序动画的实现。