【发布时间】:2023-03-15 22:02:01
【问题描述】:
我使用包含Card 组件的Paper 组件,我希望它的高度适合整个页面屏幕。我试图重现该问题并使其变得简单,因此使用以下代码:
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Card from "@material-ui/core/Card";
import CardContent from "@material-ui/core/CardContent";
const useStyles = makeStyles({
paper: {
width: "100%",
height: "100%",
backgroundColor: 'grey'
},
card: {
backgroundColor: 'blue'
}
});
export default function SimplePaper() {
const classes = useStyles();
return (
<div>
<Paper className={classes.paper}>
<Card className={classes.card}>
<CardContent>Hello World</CardContent>
</Card>
</Paper>
</div>
);
}
此时Paper高度等于卡片高度,不适合全屏,可以查看代码here。
当我使用min-height: 100vh 时,纸张高度适合全屏,但会添加一个滚动条。
import React from "react";
import { makeStyles } from "@material-ui/core/styles";
import Paper from "@material-ui/core/Paper";
import Card from "@material-ui/core/Card";
import CardContent from "@material-ui/core/CardContent";
const useStyles = makeStyles({
paper: {
width: "100%",
minHeight: "100vh",
backgroundColor: 'grey'
},
card: {
backgroundColor: 'blue'
}
});
export default function SimplePaper() {
const classes = useStyles();
return (
<div>
<Paper className={classes.paper}>
<Card className={classes.card}>
<CardContent>Hello World</CardContent>
</Card>
</Paper>
</div>
);
}
在此处查看example。 我在link 上发现了一个关于此问题的问题,但排名最高的答案并不能解决问题。
对于这个问题有什么建议或解决方案吗?
【问题讨论】:
-
bodyhtml 标签默认有边距,因此在子元素上设置100vh将导致它占用比可用空间更多的空间,即 100vh +(顶部和底部边距) -
如果您将
display: flex添加到body类,然后在第一个子元素上使用height: 100%,我相信您也可以实现全高Paper
标签: javascript css reactjs material-ui