首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用material-ui制作边栏

用material-ui制作边栏
EN

Stack Overflow用户
提问于 2016-10-05 13:04:23
回答 3查看 66.6K关注 0票数 14

我正在学习material-ui,方法是制作像这样的右导航菜单:http://demo.geekslabs.com/materialize/v3.1/或者至少像这样:http://www.material-ui.com/#/components/app-bar

我正在使用Drawer来制作侧边栏,问题是当侧边栏被切换时,它会隐藏右侧的内容。我希望当我的侧边栏被切换时,它发生了,并将内容推到右侧,侧边栏和内容都有了自己的滚动条。下面是我当前的代码:

Sidebar.js:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-07 10:53:47

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

https://material.io/archive/guidelines/patterns/navigation-drawer.html

您所要求的将不再是材料设计规范中所描述的抽屉。Material-ui试图忠实地遵循该规范。

您可能必须创建自己的组件,因为我不认为您能够充分地操作由折叠器组件呈现的标记和内联CSS来实现您正在寻找的东西。

票数 6
EN

Stack Overflow用户

发布于 2018-03-19 04:02:49

这可以通过新版本的Material-UI来实现。

查看this demos

该行为在Material specification的"Persistent“标题下进行了描述。

上面提到的Material-UI版本是v1.0.0-beta.38。到目前为止,我注意到它非常稳定。

票数 8
EN

Stack Overflow用户

发布于 2017-08-13 07:12:04

我不确定自从这篇文章发布后,材料设计是否发生了变化,但我认为OP描述的是规范中定义的“持久”抽屉。请看“行为”一节。然而,material-ui并没有提供持久的抽屉。

这是一个使用当前material-ui抽屉的好办法,将内容向右推到与抽屉相同的宽度。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39865799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档