美文网首页工作生活
react学习笔记-过渡动画(5)

react学习笔记-过渡动画(5)

作者: wayne1125 | 来源:发表于2019-07-03 18:09 被阅读0次

    4-11、React中实现css过渡动画

    handleToggle () {
        this.setState({
          show: this.state.show ? false : true
        })
      }
    <Fragment>
            <div className={this.state.show ? 'show':'hide'}>hello world</div>
            <button onClick={this.handleToggle}>toggle</button>
          </Fragment>
    style.css
    .show{
      opacity: 1;
      transition: all 1s ease-in;
    }
    .hide{
      opacity: 0;
      transition: all 1s ease-in;
    }
    

    4-12、React中实现css动画效果

    .show{
      animation: show-item 2s ease-in forwards;
    }
    .hide{
      animation: hide-item 2s ease-in forwards;
    }
    @keyframes show-item{
      0% {
        opacity: 0;
        color: red;
      }
      50% {
        opacity: .5;
        color: green;
      }
      100% {
        opacity: 1;
        color: blue;
      }
    }
    
    @keyframes hide-item{
      0% {
        opacity: 1;
        color: red;
      }
      50% {
        opacity: .5;
        color: green;
      }
      100% {
        opacity: 0;
        color: blue;
      }
    }
    

    4-13、使用react-transition-group实现动画(1)

    https://github.com/reactjs/react-transition-group

    • npm install react-transition-group --save // 安装插件
    import { CSSTransition } from 'react-transition-group'
    <CSSTransition
              in={this.state.show}
              timeout={1000}
              classNames='fade'
              unmountOnExit {/* 隐藏时移除DOM */}
              onEntered={(el) => {el.style.color = 'blue'}} {/* 初始化时钩子 */}
              appear={true} {/* 初始化时执行动画,需要添加.fade-appear及.fade-appear-active类 */}
    ><div>CSSTransition</div>
    </CSSTransition>
    
    • style.css
    .fade-enter, .fade-appear {
      opacity: 0;
    }
    .fade-enter-active, .fade-appear-active {
      opacity: 1;
      transition: all 1s ease-in;
    }
    .fade-enter-done {
      opacity: 1;
    }
    .fade-exit {
      opacity: 1;
    }
    .fade-exit-active {
      opacity: 0;
      transition: all 1s ease-in;
    }
    .fade-exit-done {
      opacity: 0;
    }
    

    4-14、使用react-transition-group实现动画(2)

    import { CSSTransition,TransitionGroup } from 'react-transition-group'
    handleToggle () {
        this.setState((prevState) => {
          return {
            show: this.state.show ? false : true,
            list: [...prevState.list,'item']
          }
        })
      }
    <TransitionGroup>
      {
        this.state.list.map((item,index) => {
          return (
            <CSSTransition
              timeout={1000}
              classNames='fade'
              unmountOnExit
              onEntered={(el) => {el.style.color = 'blue'}}
              appear={true}
              key={index}
            >
              <div>TransitionGroup</div>
            </CSSTransition>
          )
        })
      }
    </TransitionGroup>
    

    相关文章

      网友评论

        本文标题:react学习笔记-过渡动画(5)

        本文链接:https://www.haomeiwen.com/subject/jbschctx.html