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 点击按钮弹出另一页,选择值后,返回到当前页
May 26 Javascript
如何将php数组或者对象传递给javascript
Mar 20 Javascript
函数式 JavaScript(一)简介
Jul 07 Javascript
AngularJS中实现显示或隐藏动画效果的方式总结
Dec 31 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
基于JS实现的随机数字抽签实例
Dec 08 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
Electron-vue脚手架改造vue项目的方法
Oct 22 Javascript
微信小程序实现传递多个参数与事件处理
Aug 12 Javascript
JavaScript 接口原理与用法实例详解
May 12 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
信用卡效验程序
2006/10/09 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
用PHP解决的一个栈的面试题
2014/07/02 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
详解vue2.0 transition 多个元素嵌套使用过渡
2017/06/19 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
深入解读Python解析XML的几种方式
2016/02/16 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
HTML5之SVG 2D入门12—SVG DOM及DOM操作介绍
2013/01/30 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
Python如何定义一个函数
2015/09/01 面试题
教师节活动主持词
2014/04/02 职场文书
质量月活动总结
2014/08/26 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
音乐教师个人总结
2015/02/06 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
戒赌保证书
2015/05/11 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python