transition与animate动画区别

transition(过渡)

transition: property duration timing-function delay;
描述
transition-property规定设置过渡效果的 CSS 属性的名称。
transition-duration规定完成过渡效果需要多少秒或毫秒。
transition-timing-function规定速度效果的速度曲线。
transition-delay定义过渡效果何时开始。

animate

简写:animation: 1s 1s rainbow linear 3 forwards normal;

a:hover{
	animation-name: rainbow;
	animation-duration: 1s;
	animation-timing-function: linear;
	animation-delay: 1s;
	animation-fill-mode:forwards;
	animation-direction: normal;
	animation-iteration-count: 3;
}

@keyframes rainbow {
  0% { background: #c00 }
  50% { background: orange }
  100% { background: yellowgreen }
}

优缺点:

  • transition没有中间状态,但多个transition可以连在一起,形成复杂效果
  • transition监听基本属性,例如height、width、padding、margin等,其值在发生改变时就会对文档流产生影响
  • 动画渲染包含 主线程渲染,合成线程(GPU)渲染,在transition不监听上面基本属性时,transition渲染的动画效果永远比animate线程使用更少,动画更流畅(不卡顿)
  • 周期性运动,复杂动效使用animate

详细分析线程情况
timeline 分析动画

transition-group是React的一个组件,它用于在一组DOM元素上添加动画效果。它通常与CSSTransition组件一起使用,CSSTransition组件用于定义动画的进入和退出效果。 下面是一个使用transition-group和CSSTransition的例子: ```jsx import React, { Component } from 'react'; import { CSSTransition, TransitionGroup } from 'react-transition-group'; import './style.css'; class App extends Component { constructor(props) { super(props); this.state = { items: ['Item 1', 'Item 2', 'Item 3'] }; } addItem = () => { const newItem = prompt('Enter item name:'); if (newItem) { this.setState(prevState => ({ items: [...prevState.items, newItem] })); } }; removeItem = index => { this.setState(prevState => ({ items: prevState.items.filter((item, i) => i !== index) })); }; render() { const { items } = this.state; return ( <div> <button onClick={this.addItem}>Add Item</button> <TransitionGroup> {items.map((item, index) => ( <CSSTransition key={index} timeout={500} classNames="fade"> <div> {item} <button onClick={() => this.removeItem(index)}>Remove</button> </div> </CSSTransition> ))} </TransitionGroup> </div> ); } } export default App; ``` 在上面的例子中,我们使用了transition-group和CSSTransition来实现一个简单的列表,点击"Add Item"按钮可以添加新的项,每个项都有一个"Remove"按钮可以删除。当添加或删除项时,会有一个淡入淡出的动画效果。 CSS样式文件(style.css)中定义了.fade类的动画效果,你可以根据自己的需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值