# react-smooth
react-smooth is a animation library work on React.
[](https://badge.fury.io/js/react-smooth)
[](https://travis-ci.org/recharts/react-smooth)
[](https://www.npmjs.com/package/react-smooth)
[](https://gitter.im/recharts/react-smooth?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
## install
```
npm install --save react-smooth
```
## Usage
simple animation
```jsx
  
```
steps animation
```jsx
const steps = [{
  style: {
    opacity: 0,
  },
  duration: 400,
}, {
  style: {
    opacity: 1,
    transform: 'translate(0, 0)',
  },
  duration: 1000,
}, {
  style: {
    transform: 'translate(100px, 100px)',
  },
  duration: 1200,
}];
  
```
children can be a function
```jsx
  {
    ({ opacity }) => 
  }
```
you can configure js timing function
```js
const easing = configureBezier(0.1, 0.1, 0.5, 0.8);
const easing = configureSpring({ stiff: 170, damping: 20 });
```
group animation
```jsx
const appear = {
  from: 0,
  to: 1,
  attributeName: 'opacity',
};
const leave = {
  steps: [{
    style: {
      transform: 'translateX(0)',
    },
  }, {
    duration: 1000,
    style: {
      transform: 'translateX(300)',
      height: 50,
    },
  }, {
    duration: 2000,
    style: {
      height: 0,
    },
  }]
}
  { list }
/*
 *  @description: add compatible prefix in style
 *
 *  style = { transform: xxx, ...others };
 *
 *  translatedStyle = {
 *    WebkitTransform: xxx,
 *    MozTransform: xxx,
 *    OTransform: xxx,
 *    msTransform: xxx,
 *    ...others,
 *  };
 */
const translatedStyle = translateStyle(style);
```
## API
### Animate
    
    
        | name | type | default | description | 
    
    
        
          | from | string or object | '' | set the initial style of the children | 
        
          | to | string or object | '' | set the final style of the children | 
        
          | canBegin | boolean | true | whether the animation is start | 
        
          | begin | number | 0 | animation delay time | 
        
          | duration | number | 1000 | animation duration | 
        
          | steps | array | [] | animation keyframes | 
        
          | onAnimationEnd | function | () => null | called when animation finished | 
        
          | attributeName | string | '' | style property | 
        
          | easing | string | 'ease' | the animation timing function, support css timing function temporary | 
        
          | isActive | boolean | true | whether the animation is active | 
        
          | children | element |  | support only child temporary | 
    
### AnimateGroup
    
    
        | name | type | default | description | 
    
    
        
          | appear | object | undefined | configure element appear animation | 
        
          | enter | object | undefined | configure element appear animation | 
        
          | leave | object | undefined | configure element appear animation | 
    
## License
[MIT](http://opensource.org/licenses/MIT)
Copyright (c) 2015-2021 Recharts Group