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 相关文章推荐
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
Angular.Js之Scope作用域的学习教程
Apr 27 Javascript
vue路由懒加载的实现方法
Mar 12 Javascript
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
mpvue 如何使用腾讯视频插件的方法
Jul 16 Javascript
React-redux实现小案例(todolist)的过程
Sep 29 Javascript
jquery实现购物车基本功能
Oct 25 jQuery
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 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无限分类(树形类)
2013/09/28 PHP
PHP回调函数与匿名函数实例详解
2017/08/16 PHP
js获取系统的根路径实现介绍
2013/09/08 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
2018/07/08 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
Fiddler如何抓取手机APP数据包
2016/01/22 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
Python理解递归的方法总结
2019/01/28 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
Python读取YAML文件过程详解
2019/12/30 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
python从Oracle读取数据生成图表
2020/10/14 Python
Django数据库迁移常见使用方法
2020/11/12 Python
使用CSS3代码绘制可爱的Hello Kitty猫
2016/08/03 HTML / CSS
浅谈CSS3鼠标移入图片动态提示效果(transform)
2017/11/06 HTML / CSS
理工大学毕业生自荐信
2013/11/01 职场文书
农村婚礼证婚词
2014/01/10 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
党员“四风”问题批评与自我批评思想汇报
2014/10/06 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
Redis高并发缓存架构性能优化
2022/05/15 Redis