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 相关文章推荐
jQuery 对象中的类数组操作
Apr 27 Javascript
Jquery 弹出层插件实现代码
Oct 24 Javascript
纯js分页代码(简洁实用)
Nov 05 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
Feb 28 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
在javascript中使用com组件的简单实现方法
Aug 17 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
js实现城市级联菜单的2种方法
Jun 23 Javascript
angular2路由切换改变页面title的示例代码
Aug 23 Javascript
支付宝小程序tabbar底部导航
Nov 06 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 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
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php实现图片添加水印功能
2014/02/13 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
JS正则中的RegExp对象对象
2012/11/07 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
详解Bootstrap的iCheck插件checkbox和radio
2016/08/24 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
layui实现点击按钮给table添加一行
2018/08/10 Javascript
mpvue+vuex搭建小程序详细教程(完整步骤)
2018/09/30 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
Python列表(List)知识点总结
2019/02/18 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
浅谈matplotlib 绘制梯度下降求解过程
2020/07/12 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
财务助理岗位职责
2013/11/10 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
关于安全的标语
2014/06/10 职场文书
员工保密协议书
2014/09/27 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
优秀党支部申报材料
2014/12/24 职场文书
学生保证书
2015/01/16 职场文书
走近毛泽东观后感
2015/06/04 职场文书
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python
el-form每行显示两列底部按钮居中效果的实现
2022/08/05 HTML / CSS