我有一个简单的材料UI对话框,其中包含一个网格,它具有一个可以滚动几个像素的滚动条,即使屏幕足够大以包含整个内容。
> <Dialog open={isOpen} onClose={() => changeIsOpen(false)}>
<DialogContent>
<Grid container spacing={3}>
<Grid item xs={12} sm={6}>
<TextField label="First Name" fullWidth />
</Grid>
<Grid item xs={12} sm={6}>
<TextField label="Last Name" fullWidth />
</Grid>
<Grid item xs={12}>
<TextField label="Username" fullWidth />
</Grid>
</Grid>
</DialogContent>
<DialogActions>
<Button
color="secondary"
variant="contained"
onClick={() => changeIsOpen(false)}
>
Cancel
</Button>
<Button
color="primary"
variant="contained"
onClick={() => changeIsOpen(false)}
>
OK
</Button>
</DialogActions>
</Dialog>
此代码位于https://codesandbox.io/s/cool-cherry-or0r8供您查看。
我不想使用overflow: hidden
,因为如果页面太小,则会有一个滚动条,这是正确的。(在这个玩具示例中不太可能发生3个字段,但在较大的对话框中很容易发生(。
我认为这个问题与flexbox和<Grid>
使用的负边距之间的相互作用有关,但我无法完全解决。
更新:
DialogContent似乎是这里的罪魁祸首,我们可以简单地尝试用下面给出的<DialogContent/>
替换CC_3
<div style={{ padding: 20, overflow: "scroll" }}>
<Grid container spacing={3}>
<Grid item xs={12} sm={6}>
<TextField label="First Name" fullWidth />
</Grid>
<Grid item xs={12} sm={6}>
<TextField label="Last Name" fullWidth />
</Grid>
<Grid item xs={12}>
<TextField label="Username" fullWidth />
</Grid>
</Grid>
</div>;
无视此解决方案:
用以下内容替换DialogContent
:
<DialogContent>
<div style={{ overflow: "hidden", height: "100%", width: "100%" }}>
<div
style={{
paddingRight: 17,
height: "100%",
width: "100%",
boxSizing: "content-box",
overflow: "scroll"
}}
>
<Grid container spacing={3}>
<Grid item xs={12} sm={6}>
<TextField label="First Name" fullWidth />
</Grid>
<Grid item xs={12} sm={6}>
<TextField label="Last Name" fullWidth />
</Grid>
<Grid item xs={12}>
<TextField label="Username" fullWidth />
</Grid>
</Grid>
</div>
</div>
</DialogContent>
演示:https://codesandbox.io/s/09ng6
归功于此答案:https://stackoverflow.com/a/16671476/7427111
材料UI的github中有一个解决方法。我认为它是一个热五个,仍然不是解决方案,但对我有用。
我的网格容器的问题是,在间距4上,渲染元件的边距为-16px。因此,您想用一些填充物来抵消该边距。
<div style={{ padding:8 }}>
<Grid container spacing={4}>
这将解决问题。我使用了8px,因为间距4将呈现-16px的边距。希望将来能够在将来提供更好的解决方案。
在此处引用hotfix:https://github.com/mui-org/material-ui/issues/7466https://material-ui.com/components/grid/#negation-margin