react中使用动画

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: 1;
  transition: all 1s;
}

.hide {
  opacity: 0;
  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: 0;
  }
  50% {
    opacity: 0.5;
    color: pink;
  }
  100% {
    opacity: 1;
    color: green;
  }
}
@keyframes hide-item {
  0% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    opacity: 0;
  }
}
复制代码

3.使用 react-transition-group实现动画

 

复制代码
.fade-enter {
  opacity: 0;
}

.fade-enter-active {    // 在最后一帧时会被清除
  opacity: 1;
  transition: all 1s ease-in;
}
.fade-enter-done {  // 这是必须的 保证最后一帧动画的状态
  opacity: 1;
}

.fade-exit {
  opacity: 1;
}

.fade-exit-active {
  opacity: 0;
  transition: all 1s ease-in;
}
.fade-exit-done {
  opacity: 0;
}
复制代码

 

<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>
复制代码
posted @   escapist  阅读(468)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示