2016-10-05 92 views
8

我对做出正确的导航菜单像这样的学习材料UI http://www.material-ui.com/#/components/app-bar制作侧边栏与材料的UI

我使用抽屉,使我的侧边栏,问题是当侧边栏切换时,它会隐藏右侧的内容。我希望当侧边栏切换时,它发生并将内容向右推,并且边栏和内容都有自己的滚动条。这里是我当前的代码:

Sidebar.js:

import React from 'react'; 
import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; 
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; 
import getMuiTheme from 'material-ui/styles/getMuiTheme'; 
import Drawer from 'material-ui/Drawer'; 
import MenuItem from 'material-ui/MenuItem'; 
import RaisedButton from 'material-ui/RaisedButton'; 
import AppBar from 'material-ui/AppBar'; 

export default class Sidebar extends React.Component { 

    constructor(props) { 
     super(props); 
     this.state = {open: false}; 
    } 

    handleToggle =() => this.setState({open: !this.state.open}); 

    handleClose =() => this.setState({open: false}); 

    render() { 
     return (
      <MuiThemeProvider muiTheme={getMuiTheme(lightBaseTheme)}> 
       <div> 
        <RaisedButton 
         label="Open Drawer" 
         onTouchTap={this.handleToggle} 
        /> 
        <Drawer 
         containerStyle={{height: 'calc(100% - 64px)', top: 64}} 
         docked={true} 
         width={200} 
         open={this.state.open} 
         onRequestChange={(open) => this.setState({open}) 
         } 
        > 
         <AppBar title="AppBar" /> 
         <MenuItem onTouchTap={this.handleClose}>Menu Item</MenuItem> 
         <MenuItem onTouchTap={this.handleClose}>Menu Item 2</MenuItem> 
        </Drawer> 
       </div> 
      </MuiThemeProvider> 
     ); 
    } 
} 

我Layout.js:

import React, { PropTypes } from 'react'; 
import withStyles from 'isomorphic-style-loader/lib/withStyles'; 
import s from './Layout.css'; 
import Header from '../Header'; 
import Feedback from '../Feedback'; 
import Footer from '../Footer'; 
import Sidebar from '../Sidebar'; 

import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; 
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider'; 
import getMuiTheme from 'material-ui/styles/getMuiTheme'; 
import AppBar from 'material-ui/AppBar'; 
import injectTapEventPlugin from 'react-tap-event-plugin'; 
injectTapEventPlugin(); 

function Layout({ children }) { 
    return (
    <div> 
     <MuiThemeProvider muiTheme={getMuiTheme(lightBaseTheme)}> 
      <AppBar title="My web" /> 
     </MuiThemeProvider> 

     <Sidebar/> 
     {React.Children.only(children)} 
     <Feedback /> 
     <Footer /> 
    </div> 
); 
} 

Layout.propTypes = { 
    children: PropTypes.element.isRequired, 
}; 

export default withStyles(s)(Layout); 
+0

我也有同样的问题,我也想打开抽屉时,将内容推到右侧。 –

+0

我发现这里有一个答案。 https://stackoverflow.com/questions/40620302/how-to-get-material-ui-drawer-to-squeeze-other-content-when-open/40640154#40640154 ----按Jeff McCloud –

回答

6

这是由设计。 “材料设计”,即:)

https://material.google.com/patterns/navigation-drawer.html

你问什么就不再是一个抽屉,由材料设计规格说明。 Material-ui试图忠实遵循该规范。

您可能必须创建自己的组件,因为我不认为您能够充分操纵Drawer组件呈现的标记和内联CSS来完成要查找的内容。

1

我不确定材料设计是否因为发布而发生变化,但我认为OP描述了规范中定义的“持久性”抽屉。查看“行为”。但是,material-ui不提供持久的抽屉。

这是一个体面的工作,围绕使用当前material-ui抽屉,将内容向右推入与抽屉相同的宽度。

How to get Material-UI Drawer to 'squeeze' other content when open