美文网首页
用Css3 实现React 动画的三种方法

用Css3 实现React 动画的三种方法

作者: 琳媚儿 | 来源:发表于2020-04-23 20:00 被阅读0次

基础模板

import React, { Component } from 'react';
class Boss extends Component {
    constructor(props) {
        super(props);
        this.state = { 
            isShow:true
         }
         this.toToggole=this.toToggole.bind(this)
    }
    render() { 
        return ( 
            <div>
                <div className={this.state.isShow? 'show':'hide'}>
                        用CSS3实现react 动画
                </div>
                <div>
                    <button onClick={this.toToggole}>点击</button>
                </div>
            </div>
         );
    }
    toToggole() {
        this.setState({
            isShow:this.state.isShow?false:true
        })
    }

}
 
export default Boss;

初级:

.show{
 opacity: 1;
  transition: all 1.5s ease-in;
}
.hide{
 opacity: 0;
  transition: all 1.5s ease-in; 
}

中级:
Css3中的帧动画

.show{
  animation: show-item 2s ease-in forwards;
}
.hide{
  animation: hide-item 2s ease-in forwards;
}

@keyframes show-item{
  0%{
    opacity: 0;
    color: yellow;
  }
  50%{
    opacity: 0.5;
    color: red;
  } 
  100%{
    opacity: 1;
    color: green;
  }
}

@keyframes hide-item{
  0%{
    opacity: 1;
    color: yellow;
  }
  50%{
    opacity: 0.5;
    color: red;
  } 
  100%{
    opacity: 0;
    color: green;
  }
}

高级

这次用react-transition-group做一个togglebutton控制div显示和隐藏的例子,首先我们需要安装react-transition-group,输入

react-transition-group 动画库

npm install react-transition-group  

组件中引入CSSTransition模块:

import {CSSTransition} from 'react-transition-group'
    render() { 
        return ( 
            <div>
                <CSSTransition
                    in={this.state.isShow}   // 如果this.state.isShow从false变为true,则动画入场,反之out出场
                    timeout={2000} //动画执行2秒
                    classNames="boss-text"  //自定义的class名
                    unmountOnExit   //可选,当动画出场后在页面上移除包裹的dom节点
                >
                <div >用CSS3实现react 动画</div>
                </CSSTransition>
                <div>
                    <button onClick={this.toToggole}>点击</button>
                </div>
            </div>
         );
    }

一旦动画入场,插件将会自动的在包裹住的标签上添加很多css样式,默认class名是boss-text,所以我们需要给CSSTransition标签加上classNames='boss-text',然后去css文件进行配置:


/* 入场之前 */
//enter是入场前的刹那(点击按钮)
.boss-text-enter{
  opacity: 0;
}
//指入场后到入场结束的过程
.boss-text-enter-active{
  opacity: 1;
  transition: opacity 2000ms;
}
//入场动画执行完毕后,保持状态
.boss-text-done{
  opacity: 1;
}
/* 出场 */
.boss-text-exit{
  opacity: 1;
}
.boss-text-exit-active{
  opacity: 0;
  transition: opacity 2000ms;
}
.boss-text-done{
  opacity: 0;
}

如果页面上一组dom都需要添加动画效果时我们需要在最外面再加一个TransitionGroup

import React, { Component } from 'react';
import { CSSTransition, TransitionGroup } from 'react-transition-group'
class App extends Component {
    constructor(props){
        super(props);
        this.state = {
            list: []
        }
        this.handleAddItem = this.handleAddItem.bind(this);
    }
    render() {
        return (
            <div>
                <TransitionGroup>
                {
                    this.state.list.map((item, index) => {
                        return (
                            <CSSTransition
                                timeout={1000}
                                classNames='fade'
                                unmountOnExit
                                appear={true}
                                key={index}
                            >
                                <div>{item}循环列表中的内容</div>
                            </CSSTransition>
                        )
                    })
                }
                </TransitionGroup>
                <button onClick={this.handleAddItem}>toggle</button>
            </div>
        )
    }
}

export default App;

相关文章

  • Redux实现简易Todolist

    React-Transition-Group React动画组件库 实现css3过渡动画效果 用法其实我没怎么看 ...

  • web动画的几种实现方法

    web动画的几种实现方法 css3动画 setTimeout/setInterval实现 requestAnima...

  • 用Css3 实现React 动画的三种方法

    基础模板 初级: 中级:Css3中的帧动画 高级 这次用react-transition-group做一个togg...

  • 彩虹发光字体光效

    依赖css3动画实现

  • css3动画

    css3动画 CSS3 可以创建动画,它可以取代许多网页动画图像、Flash 动画和 JavaScript 实现的...

  • CSS3 动画

    动画属性 动画(animation)是CSS3新增的属性,动画属性可以为元素创建动画,CSS3以前在网页上实现动画...

  • react中使用动画 react-transition-grou

    在React中通过react-transition-group使用过渡、动画,首先要有CSS3中的过渡和动画的相关...

  • requestAnimationFrame

    实现动画效果的方法比较多,Javascript 中可以通过定时器 setTimeout 来实现,css3 可以使用...

  • 全面梳理 CSS3 动画

    前言 主要内容:CSS3 动画有那些属性?动画怎么实现,几种方法?javaScript 与它优缺点? 目录 2D ...

  • 实现动画的6种方案

    通常,前端实现动画的方案主要有6种:CSS3 transition、CSS3 animation、Canvas动画...

网友评论

      本文标题:用Css3 实现React 动画的三种方法

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