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中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
js通过元素class名字获取元素集合的具体实现
Jan 06 Javascript
使用GruntJS构建Web程序之合并压缩篇
Jun 06 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
js简单设置与使用cookie的方法
Jan 22 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
学习使用Bootstrap栅格系统
May 11 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
Javascript中的this,bind和that使用实例
Dec 05 Javascript
JavaScript对象原型链原理详解
Feb 05 Javascript
Vue实现点击箭头上下移动效果
Jun 11 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中mysql模块部分功能的简单封装
2011/09/30 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
19个Android常用工具类汇总
2014/12/30 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
JavaScript和ActionScript的交互实现代码
2010/08/01 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
2017/07/19 Javascript
js实现筛选功能
2020/11/24 Javascript
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python聊天室程序(基础版)
2018/04/01 Python
python opencv检测目标颜色的实例讲解
2018/04/02 Python
python装饰器深入学习
2018/04/06 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
python time()的实例用法
2020/11/03 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
庆八一活动方案
2014/01/25 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
风险评估实施方案
2014/03/09 职场文书
教师敬业奉献模范事迹材料
2014/05/18 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL