react中使用动画
2024-09-04 20:49:09
1. css原生动画的使用
import React, { useState } from "react"
import "./index.css" function App() {
const [show, setShow] = useState(true)
const toogle = () => {
setShow(!show)
}
return (
<div>
<div className={show ? "show" : "hide"}>hello,world</div>
<button className="btn" onClick={toogle}>
toogle
</button>
</div>
)
} export default App
样式
.show {
opacity:;
transition: all 1s;
} .hide {
opacity:;
transition: all 1s;
}
2.使用keyframes动画
.show {
animation: show-item 1s ease-in forwards; // forwards 表示保存动画最后一帧的状态
} .hide {
animation: hide-item 1s ease-in forwards;
} @keyframes show-item {
0% {
opacity:;
}
50% {
opacity: 0.5;
color: pink;
}
100% {
opacity:;
color: green;
}
}
@keyframes hide-item {
0% {
opacity:;
}
50% {
opacity: 0.5;
}
100% {
opacity:;
}
}
3.使用 react-transition-group实现动画
.fade-enter {
opacity:;
} .fade-enter-active { // 在最后一帧时会被清除
opacity:;
transition: all 1s ease-in;
}
.fade-enter-done { // 这是必须的 保证最后一帧动画的状态
opacity:;
} .fade-exit {
opacity:;
} .fade-exit-active {
opacity:;
transition: all 1s ease-in;
}
.fade-exit-done {
opacity:;
}
<CSSTransition in={show} classNames="fade" timeout={10000} unmountOnExit> unmountOnExit 表示隐藏的时候卸载该组件
<div>hello,world</div>
</CSSTransition>
刷新页面没有动画 需要加上 appear={true}
Transition / CSSTransition / TransitionGroup
Transition 相比较于 CSSTransition更加底层
4.列表动画
<TransitionGroup>
{
this.state.list.map((item,index)=>{
return (<CSSTransition key={index}
appear = {true}
timeout = {1000}
unmountOnExit
classNames='fade'
onEntered={(el)=>{el.style.color='blue'}}>
<div>{item}</div>
</CSSTransition>);
})
}
</TransitionGroup>
<button onClick={ this.handlerClick }>toogle</button>
最新文章
- google tensorflow guide
- 【转】iOS夯实:ARC时代的内存管理
- 版本管理工具SVN
- php 类文件加载 Autoloader
- MAVEN整理(乘国庆还有时间,停下来整理一下)
- TCP协议中的三次握手和四次挥手
- C Primer Plus之存储类、链接和内存管理
- HTML5随笔
- 与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器
- 滚动条加粗和panel,gridControl结合用
- Mac QQ 怎么清除聊天记录
- sqlserver isnull函数
- oracle数据导入
- springcloud 服务调用的两种方式
- Making the Grade [POJ3666] [DP]
- 初识Scala
- hdu 6170 Two strings dp
- 微信UnionId 部分开放
- HDU 6045 17多校2 Is Derek lying?
- 使用crf++
热门文章
- 关于group by的用法 原理
- gradle中gredle -q 参数是什么意思
- React: React的复合组件
- Android Monkey的用法(一)
- 使用openpyxl模块进行封装,高效处理excel测试数据
- 为了“小命”,这款APP一定要下!火爆了!
- Linux - 几种方法来实现scp拷贝时无需输入密码
- pandas 学习 第6篇:DataFrame - 数据处理(长宽格式、透视表)
- WPF的DataGrid的某个列绑定数据的三种方法(Binding、Converter、DataTrigger)
- 诚聘.NET架构师、高级开发工程师(2019年8月29日发布)