react路由跳转动画效果

1.先下载插件

npm i react-transition-group 

2.在 路由配置文件中引入插件

import React from 'react'

import { Tabbar } from 'react-vant'

import { Outlet, useNavigate, useLocation } from 'react-router-dom'

import { WapHomeO, FriendsO } from '@react-vant/icons'

import './index.css'

import { CSSTransition, TransitionGroup } from 'react-transition-group'

export default function Index() {

  const navigate = useNavigate()

  const changeTab = (path) => {

    navigate(path)

  }

  return (

    <div className='box1'>

      <TransitionGroup className='transition_wrapper' style={{ width: "100%", height: "100%",overflowX:'hidden',overflowY:'scroll' }}>

        <CSSTransition key={useLocation().pathname} unmountOnExit timeout={2000} classNames='animate'>

          <div>

            <Outlet></Outlet>

          </div>

        </CSSTransition>

      </TransitionGroup>

      <div className="box2">

        <Tabbar onChange={changeTab} activeColor='#f44336' inactiveColor='#000'>

          <Tabbar.Item icon={<WapHomeO />} name={'/home'}>首页</Tabbar.Item>

          <Tabbar.Item icon={<FriendsO />} name={'/my'}>个人</Tabbar.Item>

        </Tabbar>

      </div>

    </div>

  )

}

3.引入相应的css文件样式

这里是平铺缩放的效果

/* 入场动画过程 */

.animate-enter {

  opacity: 0;

  transform: scale(0.5);

}

.animate-enter-active {

  transition: 0.5s;

  opacity: 1;

  transform: scale(1);

}

.animate-enter-done {

  opacity: 1;

  transform: scale(1);

}

/* 出场动画过程 */

.animate-exit {

  opacity: 1;

  transform: scale(1);

}

.animate-exit-active {

  transition: 0.5s;

  opacity: 0;

  transform: scale(0.5);

}

.animate-exit-done {

  opacity: 0;

  transform: scale(0.5);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值