在 Antd React App 中像 Sider/Drawer 一样重新创建 Ant Design Pro
Recreate Ant Design Pro like Sider/Drawer in Antd React App
我正在尝试将我的 Antd React 应用程序的 style/css 配置为移动就绪。
我的主菜单使用 here.
中看到的 Reactive Sider Menu
我的问题是,当我使用移动视口查看时,它有点难看,而且它会挤压菜单外的所有内容。 expand/condense 菜单的小选项卡涵盖了我的一些其他组件。
我更喜欢他们在 Ant Design Pro 演示中的设计。
但我不确定如何准确地创建它。以前有人尝试过吗?它似乎在移动视口中使用抽屉,而不是在布局中使用 Sider API。
想通了。
基本上我的解决方案(不确定这是否是他们在 Ant Design Pro 中实际所做的)是在桌面上使用 Reactive Sider Menu 示例,在移动设备上使用 Drawer。
Reactive Sider Menu 示例中的同一个 Toggle 按钮可以 hide/close Sider(桌面版)和抽屉(移动版)。
诀窍是使用 CSS 媒体查询在桌面隐藏抽屉并在移动设备中隐藏 Sider,这样每个人都可以做自己的事情。
CSS
.hideOnMobile {
display: none;
}
@media only screen and (min-width: 768px) {
.hideOnMobile {
display: block;
}
}
.hideOnDesktop {
display: block;
}
@media only screen and (min-width: 768px) {
.hideOnDesktop {
display: none;
}
}
App.js
const App = () => {
// sider and drawer toggle
const [isToggled, setToggled] = useState(false);
const toggleTrueFalse = () => setToggled(!isToggled);
const onClose = () => {
setToggled(false);
};
return (
<Layout style={{ minHeight: "100vh" }}>
<Drawer
placement="left"
onClose={onClose}
closable={false}
visible={isToggled}
className="hideOnDesktop"
bodyStyle={{ backgroundColor: "#001529", padding: "0" }}
>
<Navbar />
</Drawer>
<Sider
breakpoint="lg"
collapsedWidth="0"
collapsed={isToggled}
onBreakpoint={(broken) => {
setToggled(broken);
}}
className="hideOnMobile"
>
<Navbar />
</Sider>
<Layout className="site-layout">
<Header
className="site-layout-background"
style={{ padding: 0 }}
>
<Row>
{React.createElement(
isToggled ? MenuUnfoldOutlined : MenuFoldOutlined,
{
className: "trigger",
onClick: toggleTrueFalse,
}
)}
<TopNavbar />
</Row>
</Header>
...
另外,根据抽屉组件的 Antd 文档,您可以使用 bodyStyle 属性来设置背景颜色并移除填充,以便菜单与抽屉的两侧齐平。
我正在尝试将我的 Antd React 应用程序的 style/css 配置为移动就绪。
我的主菜单使用 here.
中看到的 Reactive Sider Menu我的问题是,当我使用移动视口查看时,它有点难看,而且它会挤压菜单外的所有内容。 expand/condense 菜单的小选项卡涵盖了我的一些其他组件。
我更喜欢他们在 Ant Design Pro 演示中的设计。
但我不确定如何准确地创建它。以前有人尝试过吗?它似乎在移动视口中使用抽屉,而不是在布局中使用 Sider API。
想通了。
基本上我的解决方案(不确定这是否是他们在 Ant Design Pro 中实际所做的)是在桌面上使用 Reactive Sider Menu 示例,在移动设备上使用 Drawer。
Reactive Sider Menu 示例中的同一个 Toggle 按钮可以 hide/close Sider(桌面版)和抽屉(移动版)。
诀窍是使用 CSS 媒体查询在桌面隐藏抽屉并在移动设备中隐藏 Sider,这样每个人都可以做自己的事情。
CSS
.hideOnMobile {
display: none;
}
@media only screen and (min-width: 768px) {
.hideOnMobile {
display: block;
}
}
.hideOnDesktop {
display: block;
}
@media only screen and (min-width: 768px) {
.hideOnDesktop {
display: none;
}
}
App.js
const App = () => {
// sider and drawer toggle
const [isToggled, setToggled] = useState(false);
const toggleTrueFalse = () => setToggled(!isToggled);
const onClose = () => {
setToggled(false);
};
return (
<Layout style={{ minHeight: "100vh" }}>
<Drawer
placement="left"
onClose={onClose}
closable={false}
visible={isToggled}
className="hideOnDesktop"
bodyStyle={{ backgroundColor: "#001529", padding: "0" }}
>
<Navbar />
</Drawer>
<Sider
breakpoint="lg"
collapsedWidth="0"
collapsed={isToggled}
onBreakpoint={(broken) => {
setToggled(broken);
}}
className="hideOnMobile"
>
<Navbar />
</Sider>
<Layout className="site-layout">
<Header
className="site-layout-background"
style={{ padding: 0 }}
>
<Row>
{React.createElement(
isToggled ? MenuUnfoldOutlined : MenuFoldOutlined,
{
className: "trigger",
onClick: toggleTrueFalse,
}
)}
<TopNavbar />
</Row>
</Header>
...
另外,根据抽屉组件的 Antd 文档,您可以使用 bodyStyle 属性来设置背景颜色并移除填充,以便菜单与抽屉的两侧齐平。