Material UI中Paper组件高度无法增大的问题咨询
Material UI Paper组件高度被外层Box限制的问题解决
问题核心:是的,Paper高度无法超过140px的问题,根源就在外层Box的尺寸与布局设置的组合上。
原因分析
外层Box同时设置了height={800}、flexDirection="column"和justifyContent="center":
- 垂直方向的flex容器在设置固定高度后,
justifyContent="center"会让子元素(Paper)在容器内垂直居中。 - 当所有Paper的总高度超过Box的800px时,
justifyContent="center"会优先压缩子元素高度来适配容器空间,而非触发overflow:auto的滚动逻辑,导致你设置的Paper高度200px无法生效,被强制压缩至更小尺寸。
解决方案(保留外层Box的前提下)
有两种可选修改方式:
调整垂直对齐逻辑
移除justifyContent="center",或替换为justifyContent="flex-start",让子元素从容器顶部开始排列。此时Paper的高度设置会正常生效,当总高度超过800px时,overflow:auto会自动触发滚动。分离居中与滚动容器
若需保持内容垂直居中的视觉效果,可在外层Box内部嵌套一层容器,用内层容器实现居中,外层Box仅负责滚动和固定高度:
<Box height={800} overflow={'auto'} maxWidth="xl" > <Box display="flex" flexDirection="column" justifyContent="center" minHeight="100%" > {/* 原Paper列表内容 */} </Box> </Box>
修改后的代码示例(方案1)
<Box display="flex" flexDirection="column" justifyContent="flex-start" height={800} overflow={'auto'} maxWidth="xl" > {items.map((item, index) => ( <Paper key={index} sx={{ p: 2, height: '200px', width: '75%', margin: '50px auto' }} > <Typography sx={{ pb: 2 }} textAlign="center"> {item} </Typography> <Box> <Grid container spacing={2}> <Grid item xs={12}> {/* 列表项内容 */} </Grid> </Grid> <Button variant="outlined" key={'addEntry'} onClick={addEntry} sx={{ my: 2, color: 'white', display: 'block', fontFamily: 'monospace', }} > + </Button> </Box> </Paper> ))} </Box>
内容的提问来源于stack exchange,提问作者pythonNovice
相关产品推荐
相关产品推荐

