美文网首页
React:动画-react-transition-group、

React:动画-react-transition-group、

作者: 精神病患者link常 | 来源:发表于2022-07-27 16:20 被阅读0次

    react-transition-group文档:https://reactcommunity.org/react-transition-group/switch-transition

    animate.css文档:https://animate.style/

    ant.design文档:https://motion.ant.design/exhibition-cn/

    ant.design

    1.rc-tween-one:支持缩放、位移、旋转等动画

    https://motion.ant.design/language/animate-term

    import TweenOne from 'rc-tween-one';
    <TweenOne style={{backgroundColor:'red'}} animation={{ width:200 }}>
    
    

    2.Parallax 随页面滚动播放动画

    import {Parallax} from 'rc-scroll-anim';
    
      <Parallax
        // always={false}
        animation={{ y:0,opacity:1, playScale: [0.2, 0.5] }}
        style={{transform: 'translateY(100px)',opacity:0 }}
        >
        <div className='rowView'>
          <div className='rowItem' style={{backgroundColor:RandomColor()}}>12</div>
          <div  className='rowItem' style={{backgroundColor:RandomColor()}}>14</div>
          <div  className='rowItem' style={{backgroundColor:RandomColor()}}>15</div>
        </div>
      </Parallax>
    

    3.进出场动画

    import QueueAnim from 'rc-queue-anim';
    <QueueAnim type={['bottom','left']} animConfig={{ opacity:[1, 0] }}>
      <div key="demo1">依次进场</div>
      <div key="demo2">依次进场</div>
      <div key="demo3">依次进场</div>
      <div key="demo4">依次进场</div>
    </QueueAnim>
    

    animate.css使用简单,指定className即可

    react-transition-group主要通过描述各种状态的css实现动画效果

     <CSSTransition
            in={showMessage}
            timeout={300}
            classNames="alert"/>
    .alert-appear:{},
    .alert-appearActive:{},
    .alert-appearDone: {},
    .alert-enter: {},
    .alert-enterActive:{},
    .alert-enterDone:{},
    .alert-exit: {},
    .alert-exitActive:{},
    .alert-exitDone:{},
    
    import { CSSTransition } from 'react-transition-group';
    
    import './Transition.css';
    function App() {
      const [showButton, setShowButton] = useState(true);
      const [showMessage, setShowMessage] = useState(false);
     
      return (
        <Main>
         {showButton && (
            <button
              onClick={() => setShowMessage(true)}
            >
              Show Message
            </button>
          )}
          <CSSTransition
            in={showMessage}
            timeout={300}
            classNames="alert"  通过css控制动画,有多种状态对应多个css
            unmountOnExit
            onEnter={() => setShowButton(false)}
            onExited={() => setShowButton(true)}
          >
            <div style={{backgroundColor:'red'}}>
              <div>
                Animated alert message
              </div>
              <button onClick={() => setShowMessage(false)}>
                Close
              </button>
            </div>
          </CSSTransition>
        </Main>
        )
    }
    
    .alert-enter {
      opacity: 0;
      transform: translateX(-100%);
    }
    .alert-enter-active {
      opacity: 1;
      transform: translateX(0%);
      transition: opacity 300ms, transform 300ms;
    }
    .alert-exit {
      opacity: 1;
      transform: translateX(0%);
    }
    .alert-exit-active {
      opacity: 0;
      transform: translateX(100%);
      transition: opacity 300ms, transform 300ms;
    }
    
    

    相关文章

      网友评论

          本文标题:React:动画-react-transition-group、

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