react使用CSS实现react动画功能示例


Posted in Javascript onMay 18, 2020

本文实例讲述了react使用CSS实现react动画功能。分享给大家供大家参考,具体如下:

react动画:

import React, { Component } from 'react';
 
class Boss extends Component {
  constructor(props) {
    super(props);
    this.state = {
      isShow:true
    }
    this.toTogger=this.toTogger.bind(this)
  }
  render() { 
    return ( 
      <div>
        <div className={this.state.isShow?'show':'hide'}>大BOSS--孙悟空</div>
        <div><button onClick={this.toTogger}>召唤</button></div>
      </div>
    );
  }
 
  toTogger() {
    this.setState({
      isShow:this.state.isShow?false:true
    })
  }
}
 
export default Boss;

css:

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

keyframes动画:

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

react-transition-group动画库:

import {CSSTransition} from 'react-transition-group';  
 
render() { 
    return ( 
      <div>
        <CSSTransition
          in={this.state.isShow}
          timeout={2000}
          classNames="boss-text"
          unmountOnExit
        >
        {/* <div className={this.state.isShow?'show':'hide'}>大BOSS--孙悟空</div> */}
        <div>大BOSS--孙悟空</div>
        </CSSTransition>
    <div><button onClick={this.toTogger}>{this.state.btn}</button></div>
      </div>
    );
  }
.boss-text-enter{opacity: 0;}
.boss-text-enter-active{opacity: 1;transition: opacity 2000ms;}
.boss-text-enter-done{opacity: 1;}
 
.boss-text-exit{opacity: 1;}
.boss-text-exit-active{opacity: 0;transition: opacity 2000ms;}
.boss-text-exit-done{opacity: 0;}

多DOM动画:

import React, { Component, Fragment } from 'react';
import List from './List.js';
import axios from 'axios';
import Boss from './Boss';
import {CSSTransition,TransitionGroup} from 'react-transition-group'
 
class Test extends Component {
  constructor(props) {
    super(props);
    this.state={
      inputValue:'aaa',
      list:[],
    }
    // this.add=this.add.bind(this);
  }
 
  addList() {
    this.setState({
      list:[...this.state.list,this.state.inputValue],
      inputValue:''
    })
  }
 
  change(e) {
    this.setState({
      // inputValue:e.target.value
      inputValue:this.input.value
    })
  }
 
  delete(i) {
    // console.log(i);
    const list = this.state.list;
    list.splice(i,1);
    this.setState({
      list:list
    })
  }
 
  componentDidMount() {
    // console.log('componentDidMount');
    axios.get('https://www.easy-mock.com/mock/5e1d3d1564a3c20d7f366f91/ReactDemo1/App')
    .then((res)=>{
      console.log('获取数据'+JSON.stringify(res));
      this.setState({
        list:res.data.data
      });
    })
    .catch((error)=>{console.log('获取数据失败'+error)});
  }
 
  render() { 
    console.log('3-render');
    return (
      <Fragment>
      <div>
        <input ref={(input)=>{this.input=input}} value={this.state.inputValue} onChange={this.change.bind(this)}/>
        <button onClick={this.addList.bind(this)}>添加</button>
      </div>
      <ul>
        <TransitionGroup>
          {
            this.state.list.map((v,i)=>{
              return(
                <CSSTransition
                  timeout={2000}
                  classNames='boss-text'
                  unmountOnExit
                  key={i}
                >
                  <List key={i} content={v} index={i} delete={this.delete.bind(this)} />
                </CSSTransition>
              );
            })
          }
        </TransitionGroup>
      </ul>
      <Boss/>
      </Fragment>
    );
  }
}
 
export default Test;

希望本文所述对大家react程序设计有所帮助。

Javascript 相关文章推荐
js中的this关键字详解
Sep 25 Javascript
appendChild() 或 insertBefore()使用与区别介绍
Oct 11 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
Dec 22 Javascript
Angular.js中ng-include用法及多标签页面的实现方式详解
May 07 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
seajs中模块依赖的加载处理实例分析
Oct 10 Javascript
图文详解vue框架安装步骤
Feb 12 Javascript
解决vue单页面应用中动态修改title问题
Jun 09 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
Node.js API详解之 net模块实例分析
May 18 #Javascript
Javascript实现简易天数计算器
May 18 #Javascript
微信小程序开发打开另一个小程序的实现方法
May 17 #Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 #Javascript
关于AngularJS中几种Providers的区别总结
May 17 #Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 #Javascript
JavaScript链式调用原理与实现方法详解
May 16 #Javascript
You might like
将OICQ数据转成MYSQL数据
2006/10/09 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php中执行系统命令的方法
2015/03/21 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
AngularJS 异步解决实现方法
2017/06/12 Javascript
微信小程序实现图片放大预览功能
2020/10/22 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
python查看模块,对象的函数方法
2018/10/16 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python随机生成大小写字母数字混合密码(仅20行代码)
2020/02/01 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
自荐书范文范例
2014/02/13 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
房屋出售协议书
2014/04/10 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
义和团口号
2014/06/17 职场文书
办公室领导干部作风整顿个人整改措施
2014/09/17 职场文书
婚礼父母答谢词
2015/01/04 职场文书
春季运动会开幕词
2015/01/28 职场文书
2015年人事科工作总结
2015/04/28 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python