【问题标题】:Make material UI drawer stay the same size, instead of resizing when content size changes使材质 UI 抽屉保持相同大小,而不是在内容大小更改时调整大小
【发布时间】:2019-07-02 04:33:04
【问题描述】:

我正在使用带有抽屉的 Material UI。

在抽屉内,是一组可折叠列表。当我展开列表时,列表文本项可能会很长,并且抽屉会跳得更宽。 我希望抽屉的宽度为窗口大小的 30%,但是当我尝试在抽屉上设置类时,root 和 modal classNames 似乎都无法保持抽屉宽度。

这是抽屉代码:

<Drawer classes={drawerClasses} open={showStandardDrawer} anchor={"right"} onClose={closeDrawer}>

 {Array.from(items).map((item, index) => {
      return (
      <List
          key={`list-${index}`}
          component="div"
          aria-labelledby="nested-list-subheader"
          subheader={
             <ListSubheader component="div" id="nested-list-subheader">
                 {item.title}
             </ListSubheader>
          }
          className={classes.root}
      >
         { item.elements.map((el, index) => {
             return (
              <React.Fragment key={index}>
                  <ListItem key={index} button onClick={() => handleExpand(index)}>
                     <ListItemText primary={el.name} />
                          {open[index] ? <ExpandLess /> : <ExpandMore />}
                  </ListItem>
                  <Collapse in={open[index]} timeout="auto" unmountOnExit>
                      { el.descriptions.map((description, index) => {
                           return (
                               <List key={`l-${index}`} component="div" disablePadding>
                                 <ListItem button className={classes.nested} >
                                     <ListItemIcon>
                                        <StarBorder />
                                     </ListItemIcon>
                                     <ListItemText primary={description} primaryTypographyProps={{noWrap:true, width:'200px'} } />
                                   </ListItem>
                                </List>
                          )})
                    }
                    </Collapse>
               </React.Fragment>
            )
       })}
     </List>
    )
    })}
</Drawer>

这些是应用于抽屉的类('drawerClasses'):

{
    root: {
        maxWidth: '200px',
        minWidth: '50%',
        width: '50%',
        overflow: 'hidden'
    },
    modal: {
        maxWidth: '50%',
        minWidth: '50%',
        width: '50%'
    }
}

这些不是我一定想要的样式,我只是想看看是否可以让 Drawer 自行调整大小,而不是围绕其子项调整大小。

【问题讨论】:

    标签: css reactjs material-ui drawer


    【解决方案1】:

    使用paper 类而不是modal。抽屉中的Paper 元素是主要的可见容器。 rootmodal 类应用于包装器元素,它们的宽度不一定会影响纸张宽度。

    这是Permanent drawer demo的代码摘录:

    const useStyles = makeStyles(theme => ({
      drawer: {
        width: drawerWidth,
        flexShrink: 0,
      },
      drawerPaper: {
        width: drawerWidth,
      },
    }));
    
    ...
    
          <Drawer
            className={classes.drawer}
            variant="permanent"
            classes={{
              paper: classes.drawerPaper,
            }}
            anchor="left"
          >
    

    https://codesandbox.io/s/zxljh

    【讨论】:

    • 感谢您的回复...我不想要一个永久的抽屉。我想要一个按需打开和关闭的。抽屉纸也没有效果。我将尝试创建一个 Typography 元素,其宽度可以控制 ListItemText 的大小。
    • 如果您可以将CodeSandbox 添加到重现您的特定场景/问题的问题中,将会很有帮助。虽然要澄清一下,但您应该使用“paper”而不是“drawerPaper”的类键。您的评论听起来像是您使用了“drawerPaper”。
    • 问题是我没有在抽屉上设置className,只有类。所以,现在它可以工作了,但我不喜欢它的行为方式,所以我将离开它并考虑如何提高每个可折叠列表中描述的可见性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多