https://blog.csdn.net/scorpio_h/article/details/85205579
添加购物车动画
添加购物车动画要 2个层
- 外面的 div层负责 transform: translate3d(56px, 0, 0) 平移
- 透明度 opacity从 0 到 1的显示过程
- 里面的 icon图标层负责 rotate滚动

import { CSSTransition } from 'react-transition-group';<CSSTransitionin={show} // 什么时候添加样式classNames='cart'timeout={400} // 动画时长unmountOnExit // 要销毁,否则层级大于 add按钮><divclassName={classnames(styles.decrease)}onClick={onDecrease}><div className='icon-remove_circle_outline' /></div></CSSTransition>
animate.less
//入场动画.cart-enter, .cart-exit-done {opacity: 0;transform: translate3d(56px, 0, 0);.icon-remove_circle_outline {transform: rotate(180deg)}}.cart-enter-active, .cart-exit {opacity: 1;transform: translate3d(0, 0, 0);transition: all 0.4s linear; // 其他 class不需要添加 transition.icon-remove_circle_outline {transition: all 0.4s linear;transform: rotate(0)}}//入场动画执行完成后,这个 class会保留在 div上.cart-enter-done, .cart-exit {opacity: 1;transform: translate3d(0, 0, 0);.icon-remove_circle_outline {transform: rotate(0)}}//出场动画,1 出场动画执行的第一个时刻//.cart-exit {// opacity: 1;// transform: translate3d(0, 0, 0);//}.cart-exit-active {opacity: 0;transform: translate3d(56px, 0, 0);transition: all 0.4s linear;.icon-remove_circle_outline {transform: rotate(180deg);transition: all 0.4s linear;}}//出场动画执行完成后,这个 class会保留在 div上//.cart-exit-done {// opacity: 0;// transform: translate3d(56px, 0, 0);//}
CSSTransition
function App() {const [state, setState] = useState(false)return (<CSSTransitionin={state}timeout={1000}classNames="fade"appearunmountOnExitonEntered={el => {el.style.color="red"}}><div>item</div></CSSTransition>)}
入场类
less
.fade-enter {}.fade-enter-active {}.fade-enter-done {}
出场类
.fade-exit {}.fade-exit-active {}.fade-exit-done {}
