当前位置: 首页 > 面试题库 >

打开时如何获取Material-UI Drawer来“压缩”其他内容

谭凯
2023-03-14
问题内容

如果有人熟悉css和Material UI,对此将提供任何帮助。基本上,我试图实现一个Material UI
Drawer组件,该组件在打开时不仅会滑出页面内容的顶部,而且页面内容会在抽屉周围保持一致,即挤压或扩展。我在项目中使用引导行和容器,但是我不知道如何使用它们来实现此目的。这是我的组件的布局方式:

<div>
    <AppBar
    onLeftIconButtonTouchTap={this.handleToggle}
      title="Imaginary Company"
    />
    <Row>
      <QuotesList />
    </Row>
    <Drawer
    containerStyle={{ top: 64, width:150 }}
    open={this.state.open}
    >
      <MenuItem>Menu Item</MenuItem>
      <MenuItem>Menu Item 2</MenuItem>
    </Drawer>
  </div>

请注意,“ top”属性仅是因为我希望在打开或关闭抽屉时,应用栏的顶部标题区域保持可见。一如既往,任何帮助都将是惊人的!干杯

更新:我发现了一种适用于我的hacky解决方案。使用很棒的“样式化组件”库(该样式库允许您根据传入的动态道具来更改样式),我能够创建一个接受“折叠”道具的包装器组件,并且动画向右滑动到与抽屉相同。宽度(150)。如果有人偶然发现了这个并且对它们感兴趣,这是我的styled-
components代码(那里也有一些复制和粘贴的bootstrap容器样式):

const CollapsibleContainer = styled.div`
margin-left: auto;
margin-right: auto;
padding-left: 15px;
padding-right: 15px;
$:after {
content: "";
display: table;
clear: both;
}
position: absolute;
right: 0;
left: ${props => props.collapsed ? '150px' : '0'}!important;
transition: 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms;
`;

也许这不是完美的解决方案,但看起来不错。希望这可以帮助某人:)


问题答案:

也许类似于您的“ hacky”解决方案,但这是一个jsFiddle:https
://jsfiddle.net/88uq8751/3/

相同的。您可以将内容向右微调与抽屉宽度相同的距离,并使用相同的过渡/动画…这可以通过多种方式来实现,方法是使用某种形式或组合的宽度,marginLeft,绝对位置,甚至可以是transform:translate
,但我在下面使用marginLeft:

const { Drawer, RaisedButton, MuiThemeProvider, getMuiTheme } = MaterialUI;

class Example extends React.Component {
  constructor(props) {
    super(props);
    this.state = { drawerOpen: false };
  }

  render() {
    const contentStyle = {  transition: 'margin-left 450ms cubic-bezier(0.23, 1, 0.32, 1)' };

    if (this.state.drawerOpen) {
      contentStyle.marginLeft = 256;
    }

    return (
      <div>
        <Drawer open={this.state.drawerOpen}>
          <div style={{ textAlign: 'right' }}>
            <RaisedButton onClick={() => this.setState({ drawerOpen: false }) }>X</RaisedButton>
          </div>
          {this.props.children}
        </Drawer>
        <div style={contentStyle}>
          <RaisedButton onClick={() => this.setState({ drawerOpen: true }) }>Open</RaisedButton>
          <p>
            Lorem ipsum dolor sit amet, amet epicuri vel ea, noster causae oporteat has ut, ad est periculis concludaturque.Mundi docendi volutpat ut sea, an sea suas epicurei.Sea numquam definitionem ne.Te postea aliquip invidunt quo.Id prima commune complectitur pri, sed at vero posse contentiones, sea cu fuhtml" target="_blank">git etiam iusto.Ei mei prima appareat, est brute luptatum iudicabit id.Alii homero imperdiet usu id, dico meis alienum per ad, dolorem mentitum philosophia quo id.
          </p><p>
            Nec in dolor ancillae contentiones, at harum graecis his.An delectus scripserit pro.Ei dicta liber vis, sed no quidam legimus fabellas, no expetendis vituperata mei.Vim et ferri nominavi constituto.Wisi tamquam intellegebat duo in.Omittam adolescens abhorreant no sea.Cibo iusto verear ut mea, per at viris nominavi referrentur.
          </p><p>
            Sea officiis moderatius te.Graeci causae malorum ius in, cu has offendit tractatos interpretaris.Ea porro liberavisse mei, no mei propriae salutandi intellegat, te nibh singulis vim.Vim mucius feugait blandit ea.At est mollis vivendo.Eu has choro doctus verterem.Utroque suscipiantur ne eum, vix in alia intellegat.
          </p><p>
            Lorem ipsum dolor sit amet, amet epicuri vel ea, noster causae oporteat has ut, ad est periculis concludaturque.Mundi docendi volutpat ut sea, an sea suas epicurei.Sea numquam definitionem ne.Te postea aliquip invidunt quo.Id prima commune complectitur pri, sed at vero posse contentiones, sea cu fugit etiam iusto.Ei mei prima appareat, est brute luptatum iudicabit id.Alii homero imperdiet usu id, dico meis alienum per ad, dolorem mentitum philosophia quo id.
          </p><p>
            Nec in dolor ancillae contentiones, at harum graecis his.An delectus scripserit pro.Ei dicta liber vis, sed no quidam legimus fabellas, no expetendis vituperata mei.Vim et ferri nominavi constituto.Wisi tamquam intellegebat duo in.Omittam adolescens abhorreant no sea.Cibo iusto verear ut mea, per at viris nominavi referrentur.
          </p><p>
            Sea officiis moderatius te.Graeci causae malorum ius in, cu has offendit tractatos interpretaris.Ea porro liberavisse mei, no mei propriae salutandi intellegat, te nibh singulis vim.Vim mucius feugait blandit ea.At est mollis vivendo.Eu has choro doctus verterem.Utroque suscipiantur ne eum, vix in alia intellegat.
          </p><p>
            Lorem ipsum dolor sit amet, amet epicuri vel ea, noster causae oporteat has ut, ad est periculis concludaturque.Mundi docendi volutpat ut sea, an sea suas epicurei.Sea numquam definitionem ne.Te postea aliquip invidunt quo.Id prima commune complectitur pri, sed at vero posse contentiones, sea cu fugit etiam iusto.Ei mei prima appareat, est brute luptatum iudicabit id.Alii homero imperdiet usu id, dico meis alienum per ad, dolorem mentitum philosophia quo id.
          </p><p>
            Nec in dolor ancillae contentiones, at harum graecis his.An delectus scripserit pro.Ei dicta liber vis, sed no quidam legimus fabellas, no expetendis vituperata mei.Vim et ferri nominavi constituto.Wisi tamquam intellegebat duo in.Omittam adolescens abhorreant no sea.Cibo iusto verear ut mea, per at viris nominavi referrentur.
          </p><p>
            Sea officiis moderatius te.Graeci causae malorum ius in, cu has offendit tractatos interpretaris.Ea porro liberavisse mei, no mei propriae salutandi intellegat, te nibh singulis vim.Vim mucius feugait blandit ea.At est mollis vivendo.Eu has choro doctus verterem.Utroque suscipiantur ne eum, vix in alia intellegat.
          </p>        
        </div>
    </div>
    );
  }

}

const App = () => (
  <MuiThemeProvider muiTheme={getMuiTheme() }>
    <Example />
  </MuiThemeProvider>
);

ReactDOM.render(
  <App />,
  document.getElementById('container')
);


 类似资料:
  • 我有下面的代码,我过去经常点击特定的按钮来显示或隐藏内容,它成功地工作了,但这不仅仅是我想要的,而且当一个内容显示时,我想要的也不可能是另一个打开,这意味着如果我显示其中一个内容并试图显示另一个内容,第二个内容将导致第一个内容显示自动崩溃,但我失败了,我怎么能做到呢。 我的代码

  • 好的,我有一个包含gz文件的zip文件(unix gzip)。 如何使用? 编辑:这不是一个重复,因为我的gzipped文件在一个zipped文件中,我试图避免将该zip文件解压缩到磁盘上。它与zip文件中的zip文件一起工作,就像如何在Python中从zip文件中读取zip文件一样?.

  • 当我像这样使用DataFrame groupby时: 我只会得到一个列为“age”和“count(id)”的DataFrame,但在df中,还有许多其他列,如“name”。 总之,我想得到MySQL中的结果, “按年龄从df组中选择姓名、年龄、计数(id)” 在Spark中使用groupby时该怎么办?

  • 我对Spark和Scala是新手。我们将广告事件日志文件格式化为CSV,然后使用PKZIP进行压缩。我已经看到了许多关于如何使用Java解压缩压缩文件的示例,但是如何使用Scala for Spark来实现这一点呢?我们最终希望从每个传入文件中获取、提取并加载数据到Hbase目标表中。也许这可以用HadooprDD来完成吗?在这之后,我们将引入Spark streaming来监视这些文件。

  • 问题内容: 我在Amazon s3存储桶中有一堆文件,我想压缩这些文件并使用Java Spring通过S3 URL下载获取内容。 问题答案: S3不是文件服务器,也不提供操作系统文件服务,例如数据处理。 如果有很多“巨大”文件,那么最好的选择是 启动一个简单的EC2实例 将所有这些文件下载到EC2实例,进行压缩,然后使用新的对象名称将其重新上传回S3存储桶 是的,您可以使用AWS lambda执行

  • 我使用LZMA SDK在Windows7(64位)下进行文件压缩/解压缩(LZMA是7-zip中使用的默认算法)。 sdk可以在这里找到(源代码)http://7-zip.org/sdk.html 以加快闪烁过程。我想做增量压缩来分离文件,以获得更小的大小。然而,我想用增量解压缩来解压缩文件,这样第一部分被解压缩,而其他部分来自can总线。 所以在MCU部分,我想要能够一个部分一个部分的解压和闪存