使用react-transition-group实现动画

2019-01-10  本文已影响0人  路人_Ding
在项目的根目录下安装依赖包
# npm
npm install react-transition-group --save

# yarn
yarn add react-transition-group

安装完成引入react-transition-group包
import { CSSTransition ,TransitionGroup } from 'react-transition-group';
//用法: 在需要做动画的元素上包裹一个< CSSTransition></ CSSTransition>组件
//in={this.props.show} 的值改变会触发动画
//timeout ={2000} 动画执行多久
//classNames = 'fade'  css类名
//unmountOnExit dom会被移除
//apper={true} 第一次显示需要动画。需要在css文件中新增加类名
            <CSSTransition
            in={this.props.show}
            timeout ={2000}
            classNames = 'fade'
            unmountOnExit
            apper={true}
             >
            <div onClick={this.handelClick}>{content}</div>
            </CSSTransition>
//入场动画
.fade-enter,fade-appear {
    opacity: 0;
}
.fade-enter-active,fade-appear-active {
    opacity: 0.5;
    transition: opacity 1s ease-in;
} 
.fade-enter-done {
    opacity: 1;
}
//出场动画
.fade-exit{
    opacity: 1;
}
.fade-exit-active{
    opacity: 0.5;
    transition: opacity 1s ease-in;
}
.fade-exit-done {
    opacity: 0;
}
CSSTransition中的一些钩子函数
onEnter:入场动画第一帧的时候触发
onEntering : 入场动画第二帧的时候触发
onEntered :入场动画结束的时候触发
onExit : 出场动画结束第一帧的时候触发
onExiting : 出场动画结束第二帧的时候触发
onExited :  出场动画结束的时候触发

多个dom元素动画的实现

//用法
<TransitionGroup>
      {
      this.state.list.map((item,index) => {
          return (
            <CSSTransition
            timeout ={2000}
            classNames = 'fade'
            unmountOnExit
            apper={true}
             >
              <div>{item}</div>
           </CSSTransition>
              )
      })
      }
</TransitionGroup>
上一篇下一篇

猜你喜欢

热点阅读