侧边栏从左到右
Sidebar from left to right
我在我的 React 应用程序中需要帮助(顺风)我希望我的滑动条从左到右开始,我已经编写了代码,但它在中心显示了条,如下图所示
当我按下横条(显示在左上角)时,侧边条会向左移动,如下图所示
我想要侧边栏,每当我按下蓝色条时,它就会显示从左到右的侧边栏,每当我按下 x 时,它就会从右到左关闭侧边栏
这是SideBarMenu.jsx
的代码
import { useState } from "react";
const Sidebar = () => {
const [showSidebar, setShowSidebar] = useState(false);
return (
<>
{showSidebar ? (
<button
className="flex text-4xl text-white items-center cursor-pointer fixed left-10 top-6 z-50"
onClick={() => setShowSidebar(!showSidebar)}
>
x
</button>
) : (
<svg
onClick={() => setShowSidebar(!showSidebar)}
className="fixed z-30 flex items-center cursor-pointer left-10 top-6"
fill="#2563EB"
viewBox="0 0 100 80"
width="40"
height="40"
>
<rect width="100" height="10"></rect>
<rect y="30" width="100" height="10"></rect>
<rect y="60" width="100" height="10"></rect>
</svg>
)}
<div
className={`top-0 left-0 w-[35vw] bg-blue-600 p-10 pl-20 text-white fixed h-full z-40 ease-in-out duration-300 ${
showSidebar ? "translate-x-0 " : "translate-x-full"
}`}
>
<h3 className="mt-20 text-4xl font-semibold text-white">
Home
</h3>
</div>
</>
);
};
export default Sidebar
这是App.js
中的代码
import SideBarMenu from "./components/sidebarmenu/SideBarMenu";
function App() {
const user = false;
return (
<Router>
<div className="flex flex-default items-center justify-center min-h-screen py-2">
<SideBarMenu />
</div>
<TopBar/>
<Routes>
<Route path="/" exact element={<Home></Home>}>
</Route>
<Route path="/register" element={user ? <Home /> : <Register />} >
</Route>
<Route path="/login" element={user ? <Home /> : <Login />}>
</Route>
<Route path="/write" element={user ? <Write /> : <Register />}>
</Route>
<Route path="/settings" element={user ? <Settings /> : <Register />}>
</Route>
<Route path="/post/:postid" element={<Single></Single>}>
</Route>
</Routes>
</Router>
);
}
export default App;
在你的 SideBarMenu.jsx
中,在 translate-x-full
之前添加一个减号,以便在 showSidebar
为 false 时隐藏(负值)。
<div
className={`top-0 left-0 w-[35vw] bg-blue-600 p-10 pl-20 text-white fixed h-full z-40 ease-in-out duration-300 ${
showSidebar ? "translate-x-0" : "-translate-x-full"
}`}
>
<h3 className="mt-20 text-4xl font-semibold text-white">
Home
</h3>
</div>
我在我的 React 应用程序中需要帮助(顺风)我希望我的滑动条从左到右开始,我已经编写了代码,但它在中心显示了条,如下图所示
当我按下横条(显示在左上角)时,侧边条会向左移动,如下图所示
我想要侧边栏,每当我按下蓝色条时,它就会显示从左到右的侧边栏,每当我按下 x 时,它就会从右到左关闭侧边栏
这是SideBarMenu.jsx
的代码import { useState } from "react";
const Sidebar = () => {
const [showSidebar, setShowSidebar] = useState(false);
return (
<>
{showSidebar ? (
<button
className="flex text-4xl text-white items-center cursor-pointer fixed left-10 top-6 z-50"
onClick={() => setShowSidebar(!showSidebar)}
>
x
</button>
) : (
<svg
onClick={() => setShowSidebar(!showSidebar)}
className="fixed z-30 flex items-center cursor-pointer left-10 top-6"
fill="#2563EB"
viewBox="0 0 100 80"
width="40"
height="40"
>
<rect width="100" height="10"></rect>
<rect y="30" width="100" height="10"></rect>
<rect y="60" width="100" height="10"></rect>
</svg>
)}
<div
className={`top-0 left-0 w-[35vw] bg-blue-600 p-10 pl-20 text-white fixed h-full z-40 ease-in-out duration-300 ${
showSidebar ? "translate-x-0 " : "translate-x-full"
}`}
>
<h3 className="mt-20 text-4xl font-semibold text-white">
Home
</h3>
</div>
</>
);
};
export default Sidebar
这是App.js
中的代码import SideBarMenu from "./components/sidebarmenu/SideBarMenu";
function App() {
const user = false;
return (
<Router>
<div className="flex flex-default items-center justify-center min-h-screen py-2">
<SideBarMenu />
</div>
<TopBar/>
<Routes>
<Route path="/" exact element={<Home></Home>}>
</Route>
<Route path="/register" element={user ? <Home /> : <Register />} >
</Route>
<Route path="/login" element={user ? <Home /> : <Login />}>
</Route>
<Route path="/write" element={user ? <Write /> : <Register />}>
</Route>
<Route path="/settings" element={user ? <Settings /> : <Register />}>
</Route>
<Route path="/post/:postid" element={<Single></Single>}>
</Route>
</Routes>
</Router>
);
}
export default App;
在你的 SideBarMenu.jsx
中,在 translate-x-full
之前添加一个减号,以便在 showSidebar
为 false 时隐藏(负值)。
<div
className={`top-0 left-0 w-[35vw] bg-blue-600 p-10 pl-20 text-white fixed h-full z-40 ease-in-out duration-300 ${
showSidebar ? "translate-x-0" : "-translate-x-full"
}`}
>
<h3 className="mt-20 text-4xl font-semibold text-white">
Home
</h3>
</div>