You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Tailwind CSS与React实现右入右出的页面过渡效果

路由页滑动过渡效果实现方案

你的实现存在3个核心问题:

  • 过渡状态绑定在Search组件内部,路由跳转时组件会直接销毁,离场动画没有执行时机
  • 直接用Link跳转路由会立即切换组件,Transition的离场逻辑无法触发
  • showSearchPage默认值为true,组件挂载后直接进入显示状态,入场动画不会触发

方案:路由层统一管理过渡动画

我们将过渡逻辑抽离到路由根组件,通过路由路径控制过渡状态,保证动画执行完成后再完成组件切换。

1. 调整路由根组件(App.jsx)

import { Routes, Route, useLocation } from 'react-router-dom'
import { Transition, TransitionGroup } from '@headlessui/react'
import Home from './Home'
import SearchCategoryPage from './SearchCategoryPage'

function App() {
  const location = useLocation()
  return (
    <div className="relative min-h-screen">
      {/* 常驻展示的首页路由 */}
      <Routes location={location}>
        <Route path="/" element={<Home />} />
      </Routes>
      {/* 带过渡效果的搜索页路由 */}
      <TransitionGroup className="relative">
        <Transition
          key={location.pathname}
          show={location.pathname === '/search'}
          enter="transition-all duration-300 ease-out"
          enterFrom="translate-x-full"
          enterTo="translate-x-0"
          leave="transition-all duration-300 ease-in"
          leaveFrom="translate-x-0"
          leaveTo="translate-x-full"
        >
          <Routes location={location}>
            <Route path="/search" element={<SearchCategoryPage />} />
          </Routes>
        </Transition>
      </TransitionGroup>
    </div>
  )
}
export default App

2. 改造SearchCategoryPage组件

移除内部的状态和Transition组件,仅保留页面内容:

import { Link } from "react-router-dom";

const SearchCategoryPage = () => {
  return (
    <div className="fixed bg-black text-white max-w-2xl mx-auto inset-0 z-40 overflow-y-scroll">
      <Link to="/">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Aspernatur
        animi inventore accusantium incidunt deleniti, minima, molestiae libero
        consectetur eligendi, veniam iure eum repellendus. Accusamus, sapiente
        id, voluptatum assumenda sunt totam natus explicabo sit ipsam facere
        optio vitae fugit tempora hic. Id mollitia rerum accusamus accusantium.
        Nulla a nihil fugit aliquam provident porro! Sunt ducimus totam minima
        ipsam illo labore, asperiores animi nemo quo tempora tenetur
        perspiciatis aspernatur error, molestiae delectus consequatur sapiente
        exercitationem esse eaque, suscipit mollitia! Vel sit vitae id eos
        exercitationem? Id veritatis voluptatem facere mollitia, ab ipsum, atque
        voluptatum eos eius illo nam ea consequatur vel inventore?
      </Link>
    </div>
  );
};
export default SearchCategoryPage;

3. 首页代码无需调整

<Link to="/search">
  <img src={Search} alt="search" className="cursor-pointer" />
</Link>

注意事项

  • Tailwind v3及以上版本不需要手动添加transform类名,位移属性会自动触发transform效果
  • 搜索页的z-index必须高于首页,避免被首页内容遮挡
  • 如果使用React Router v6以下版本,需要对应调整路由匹配逻辑

内容的提问来源于stack exchange,提问作者Chandler Bing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:15:04