如何在 React 中构建响应标题菜单的侧边切换菜单
IT技术
reactjs
2021-05-20 00:29:51
1个回答
这个问题太多了,无法给出完整的答案。所以我只是要给出一个没有代码的简单布局设计。您应该能够使用此设置自己编写代码,因为它应该非常简单。
您需要一个主要组件来呈现页面的页眉、侧边栏和内容。
标题主要组件需要根据标题点击处理打开或关闭状态。所以header item onClick(this.props.onClick)
。props.onClick 被传递给 header 组件,主组件需要捕获它并设置一个状态。
this.setState({sidebarOpen: !this.state.sidebarOpen});
这将总结对点击状态的切换效果。现在,当您渲染时,只需根据该状态设置一个 className。
let sidebarClassname = this.state.sidebarOpen ? 'sidebar open' : 'sidebar';
let contentClassname = this.state.sidebarOpen ? 'content open' : 'content';
并将其通过渲染传递给您的组件。
<Sidebar className={sidebarClassname}
<Content className={contentClassname}
从这里开始,您应该可以渲染组件,并且当您单击标题时,侧边栏应该会获得一个活动类。然后你只需要设计它
布局本身应该相当简单。
css
.header {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 60px;
}
.sidebar {
position: absolute;
top: 60px;
left: -300px;
height: 100%;
width: 300px;
transition: left .3s ease-in-out;
}
.content {
position: absolute;
top: 60px;
left: 0;
right: 0;
height: 100%;
transition: left .3s ease-in-out;
}
这应该很简单。您需要将侧边栏放在页面之外并且内容需要填满页面
这里很酷的部分是当您获得一个活动类(即open
)时,您应该能够调整左侧位置以创建有效的幻灯片(因为我们在 left 属性上添加了 css 过渡。
.sidebar.open {
left: 0;
}
.content.open {
left: 300px;
}