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渐变显示渐变消失示例代码
Aug 01 Javascript
JS实现随机数生成算法示例代码
Aug 08 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
浅谈几种常用的JS类定义方法
Jun 08 Javascript
JavaScript中this的四个绑定规则总结
Sep 26 Javascript
详解vue组件化开发-vuex状态管理库
Apr 10 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
Vue如何使用混合Mixins和插件开发详解
Feb 05 Javascript
keep-alive保持组件状态的方法
Dec 02 Javascript
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脚本数据库功能详解(中)
2006/10/09 PHP
php中对xml读取的相关函数的介绍一
2008/06/05 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
Linux php 中文乱码的快速解决方法
2016/05/13 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
div当滚动到页面顶部的时候固定在顶部实例代码
2013/05/27 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
Webpack优化配置缩小文件搜索范围
2017/12/25 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
javaScript中indexOf用法技巧
2019/11/26 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
使用Python下载Bing图片(代码)
2013/11/07 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
python中logging包的使用总结
2018/02/28 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
python使用插值法画出平滑曲线
2018/12/15 Python
python将视频转换为全字符视频
2019/04/26 Python
详解Python sys.argv使用方法
2019/05/10 Python
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
酒店优秀员工事迹材料
2014/06/02 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
考勤制度通知
2015/04/25 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
python文件与路径操作神器 pathlib
2022/04/01 Python
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
2022/05/25 SQL Server