React—12—过渡动画;

news/2025/3/3 3:40:29/文章来源:https://www.cnblogs.com/EricShen/p/18747160

 

一、react-transition-grou过渡动画

react-transition-group本质是自动给我们添加类和删除类,具体的过渡动画效果还是要我们自己写。

 

◼ 在开发中,我们想要给一个组件的显示和消失添加某种过渡动画,可以很好的增加用户体验。
◼ 当然,我们可以通过原生的CSS来实现这些过渡动画,但是React社区为我们提供了react-transition-group用来完成过渡动画。
◼ React曾为开发者提供过动画插件 react-addons-css-transition-group,后由社区维护,形成了现在的 react-transition
group。
 这个库可以帮助我们方便的实现组件的 入场 和 离场 动画,使用时需要进行额外的安装:
◼ react-transition-group本身非常小,不会为我们应用程序增加过多的负担。
react-transition-group介绍
# npm
npm install react-transition-group --save
 
 
◼ react-transition-group主要包含四个组件:
◼ Transition
 该组件是一个和平台无关的组件(不一定要结合CSS);
 在前端开发中,我们一般是结合CSS来完成样式,所以比较常用的是CSSTransition;
◼ CSSTransition
 在前端开发中,通常使用CSSTransition来完成过渡动画效果
◼ SwitchTransition
 两个组件显示和隐藏切换时,使用该组件
◼ TransitionGroup
 将多个动画组件包裹在其中,一般用于列表中元素的动画;

 

(一)CSSTransition组件

1.1 CSSTransition是基于Transition组件构建的:
 
1.2CSSTransition执行过程中,有三个状态:appear、enter、exit;
     这三个状态,又都有三种情况,需要定义对应的CSS样式:
  • 第一类,开始状态:对于的类是-appear、-enter、exit;
  • 第二类:执行动画:对应的类是-appear-active、-enter-active、-exit-active;
  • 第三类:执行结束:对应的类是-appear-done、-enter-done、-exit-done;
appear
appear是初次显示动画,和enter的区别是只有第一次显示会走apper,后面的显示都走enter。enter
enter是元素显示的动画,即进入动画,进入有三个状态,初始的enter、执行动画期间的enter-active、执行结束后的enter-done/
并且react是给元素先加入enter类,在加入enter-active类,
最终经过我们写的timeout时间后,把enter和enter-active都去掉,加入enter-done类。
所以,如果我们想实现一个隐入隐出的效果,
可以在enter类里写opacity:0
然后react会立马在enter类保留的基础上,在添加一个enter-acitve类,这个时候enter-acitve类就写
opacity:1;
transition:all 2s ease;
这样,这个元素的opacity属性就从0变到了1,然后由于我们加了一个transition的效果,所以opacity在变化的时候,会有动态效果。
最终在经过timeout时间后,react会把enter和enter-active类都去掉,然后加入enter-done类。exit
exit是元素消失的动画
用法和enter一样。

 

import React, { PureComponent } from 'react';
import { CSSTransition } from 'react-transition-group';
import './style.css';
// 编写一个组件
class App extends PureComponent {constructor() {super();this.state = {isShow: true};}render() {const { isShow } = this.state;return (<div><button onClick={e => this.setState({ isShow: !isShow })}>切换</button><CSSTransition in={isShow} appear classNames="foo" timeout={2000} unmountOnExit={true}><div><h1>过渡动画</h1></div></CSSTransition></div>);}
}export default App;




样式:::::::::::::::::::::::::

.foo-appear {
  transform: translateX(-150px);
}

.foo-appear-active {
  transform: translateX(0);
  transition: transform 2s ease;
}

.foo-enter{
    opacity: 0;
}

.foo-enter-active{
    opacity: 1;
    transition: all 1s ease;
}

.foo-exit{
  opacity: 1;
}

.foo-exit-active{
  opacity: 0;
  transition: all 1s ease;
}


 

 
 
 

1.3CSSTransition常见对应的属性:

 in:触发进入或者退出状态

  •  如果添加了unmountOnExit={true},那么该组件会在执行退出动画结束后被移除掉;

  •  当in为true时,触发进入状态,会添加-enter、-enter-acitve的class开始执行动画,当动画执行结束后,会移除两个class,

  • 并且添加-enter-done的class;

  •  当in为false时,触发退出状态,会添加-exit、-exit-active的class开始执行动画,当动画执行结束后,会移除两个class,并

  • 且添加-enter-done的class;

classNames:动画class的名称, 决定了在编写css时,对应的class名称:比如card-enter、card-enter-active、card-enter-done;

timeout:过渡动画的时间

appear:是否在初次进入添加动画(需要和in同时为true)

unmountOnExit:退出后是否卸载组件

 
其他属性可以参考官网来学习:https://reactcommunity.org/react-transition-group/transition
 

1.4 CSSTransition对应的钩子函数:

主要为了检测动画的执行过程,来完成一些JavaScript的操作
 onEnter:在进入动画之前被触发;
 onEntering:在应用进入动画时被触发;
 onEntered:在应用进入动画结束后被触发;

 

 

 

 

(二)SwitchTransition

CSSTransition:一个是单独组件的显示和消失。

SwitchTransition:一个两个组件的切换。

◼ SwitchTransition可以完成两个组件之间切换的炫酷动画:
 比如我们有一个按钮需要在on和off之间切换,我们希望看到on先从左侧退出,off再从右侧进入;
 这个动画在vue中被称之为 vue transition modes;
 react-transition-group中使用SwitchTransition来实现该动画;
◼ SwitchTransition中主要有一个属性:mode,有两个值
 in-out:表示新组件先进入,旧组件再移除;
 out-in:表示就组件先移除,新组建再进入;
◼ 如何使用SwitchTransition呢?
 SwitchTransition组件里面要有CSSTransition或者Transition组件,不能直接包裹你想要切换的组件;
 SwitchTransition里面的CSSTransition或Transition组件不再像以前那样接受in属性来判断元素是何种状态,取而代之的是
key属性;
 

(三)TransitionGroup

CSSTransition:单独组件切换(显示和消失

SwitchTransition:两个组件的切换。

TransitionGroup:一组组件中,增加或删除某个组件。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/892507.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在 Aspire 项目下使用 AgileConfig

什么是 Aspire .NET Aspire 是一组工具、模板和包,用于构建易于监控的、可投入生产的应用程序。.NET Aspire 通过一系列 NuGet 包交付,这些包通过启动或解决现代应用开发中的特定问题来提升开发效率。 如今的应用通常使用大量服务,例如数据库、消息传送和缓存,其中许多服务…

FastAPI路由与请求处理进阶指南:解锁企业级API开发黑科技

title: FastAPI路由与请求处理进阶指南:解锁企业级API开发黑科技 🔥 date: 2025/3/3 updated: 2025/3/3 author: cmdragon excerpt: 5种高级路由模式(正则路由/权重路由/动态路由) 请求体嵌套与多文件流式上传方案 用依赖注入实现百万级QPS路由的性能优化 11个生产级错误…

第3阶段 --- 期权行情拆解演练 -- 3月

3.2日 【第50个打卡】1.小刀介绍期权大赛这个新打卡,门槛比较高。我暂时不符合,截图仅仅是了解!!!解决交易中,长线做成短线;把短线做成了长线;---- 这个东西是需要通过复盘来解决的。 不管是做买方,还是卖方,这个长短线问题,是一定要解决的。截图来讲,行情是刚开始…

Unity导出微信小游戏问题【持续收录】

在unity中导出微信小游戏时提示报错:Error building Player: Incompatible color space with graphics API 答:在菜单栏 File/Project Settings/Player -> Other Setting中,将Color Space修改为Gamma。 导出微信小游戏后,在微信开发者工具中导入项目后,报错 app.json: …

VSCode 缺少模块ModuleNotFoundError

使用.env配置PYTHONPATH来完成模块的加载在单一模块文件中添加 import sys; sys.path.append("..") 多个模块还是仍然存在无法运行该子程序,就会出现如下ModuleNotFoundError 解决方法: 项目根目录下创建.env 文件 # .env 解决了设置PYTHONPATH环境变量配置,防止项…

SharePoint 列表直接触发Power Automate

前言我们在使用SharePoint列表触发Automate的情况,经常是通过列表的新建、更新事件,其实,我们还可以选择项目,直接运行Automate。正文1.选择新建一个流,如下图:2.我这里选择See your flows,如下图:3.然后会打开Power Automate,新建一个Flow,类型要选择对,如下图:4.…

SharePoint 使用列表创建调查

前言最近,SharePoint Online多了一个新功能叫Forms,蛮有意思的。正文1.新建一个列表,做个演示(我这里选择的空列表,后面觉得如果在Excel里做好列表结构,根据Excel可能会更快),如下图:2.名字叫Survey,然后创建,如下图:3.在列表的菜单栏里有个Forms,点击,如下图:4…

2025 胜选邮寄

Day 0 通知双休,趁这个机会参加一下省选。为了找回手感进行了几场模拟赛,结果被清一色干麻了,根本来不及和牌。 Day 1Day 2后记 单推梅拉米一辈子。

SharePoint Online 页面布局的新功能

前言最近,SharePoint Online上线了一些新功能,比较引人注目的就是页面布局的新功能,更加的灵活多变了。正文1.我们新建一个页面,来做一下测试,如下图2.这里我们可以选择模板,然后点击Create Page新建页面,如下图:3.添加Section,添加flexible section,如下图:好伤心,…

【直播预告】第7期搜索客 Meetup | 开源智能搜索与知识库管理,极限科技 Coco AI 产品介绍

本次活动由 搜索客社区、极限科技(INFINI Labs)联合举办,活动邀请到 INFINI Labs 创始人& CEO 曾勇 来分享和演示极限科技最新推出的开源搜索产品 Coco AI ,欢迎预约直播观看 ~ 活动主题:开源智能搜索与知识库管理,极限科技 Coco AI 产品介绍 活动时间:2025 年 03 月…

使用Node.js打造交互式脚手架,简化模板下载与项目创建

在上一篇文章中,我们探讨了如何构建一个通用的脚手架框架。今天,我们将在此基础上进一步扩展脚手架的功能,赋予它下载项目模板的能力。 通常情况下,我们可以将项目模板发布到 npm 上,或者在公司内部利用私有 npm 仓库进行托管。通过交互式命令行界面,开发者可以轻松选择项…

V90通过EPOS位置控制

硬件组态选择西门子报文111V-ASSISTANT的设置选择EPOS选111报文设置IP设置减速比设置限位及原点传感器设置控制字以启用输入输出设置回零参数电机抱闸设置在线检查设置完毕后,自动优化电机设置点动速度的控制字电机监控和诊断状态字参数保存后需重启驱动器才能生效。 LU单位和…