javascript - Material-UI 组件仅在移动设备上溢出屏幕
问题描述
编辑:这是唯一有问题的页面。同一网站的其他页面正确显示。
我用 React 和 Material-UI 制作了一个网页。顶部组件是Grid
和Container
。它在台式机上看起来不错,但在移动设备上……嗯……这是屏幕的一侧:
创建了额外的空间(浅灰色),并且图片和卡片超出了屏幕最大宽度。标题(蓝色)和背景(浅蓝色)具有正确的宽度(屏幕宽度)。
我正在使用Grid
和Container
。
这是包含卡片的根组件:
<Grid
container
spacing={0}
direction="row"
justify="space-around"
alignItems="center"
style={{ minHeight: "20vh" }}
> ....
这是另一个改变宽度的容器:
<Container maxWidth="lg" style={{ marginBottom: "5vh" }}>
<Paper style={{ padding: 20 }}>
<Grid
container
spacing={0}
direction="column"
justify="flex-start"
alignItems="center"
> ....
正确显示的 Header 只是一个AppBar
.
溢出的顶部图像返回:
<div className={classes.heroContent}>
<Container maxWidth="md" align="center">
<Grid
container
direction="column"
justify="flex-end"
alignItems="center"
> ...
而且classes.heroContent
是:
heroContent: {
backgroundImage: `url(${grupo})`,
backgroundSize: "cover",
backgroundRepeat: "no-repeat",
backgroundPosition: "center",
padding: theme.spacing(8, 0, 8),
minHeight: "20vh",
}, ...
这个溢出的原因可能是什么?我一直在阅读文档,但找不到错误。
解决方案
我已经解决了。那里有两个问题。
问题1:
作为卡片的根组件的一个网格组件被指定为container
但不是item
。
问题1解释:
由于卡片位于Grid
父组件的内部,因此还有一个item
. 在我将所有内部Grid
至少有一个的组件指定Grid
为 acontainer
之后,将容器Grid
内的所有组件Grid
直接或间接指定为父组件,因为item
它几乎可以工作。
问题2:
卡片内的媒体尺寸和卡片的边距的组合对于屏幕来说太大了。解决方案是更改margin
和width
单位。
解释问题2:
这些卡现在有这个 CSS:
cards: {
margin: "5vw",
marginBottom: "0vh",
},
media: {
height: "35vh",
width: "45vw",
},
问题是单位。我使用的是margin: '5vh'
根据 vierport 的高度计算的边距。在高度大于宽度(移动)的视口中,高度的一小部分仍然大于宽度。
推荐阅读
- c# - 亚马逊 MWS 更新跟踪号
- amazon-s3 - 如何在 Kubernetes 的 fluentd-kubernetes-daemonset 中添加多个输出
- go - 从本地系统获取当前位置区域
- javascript - 在回调函数中创建的对象未定义
- css - sass亮度函数查询
- javascript - 一旦满足特定条件,如何禁用点击事件?
- c# - 使用while循环在二维数组列表中的C#用户输入选择
- php - preg_match_all 输出 PHP 中的奇怪数组结构
- c++ - 使用 new 声明数组后的 delete[] 关键字导致错误
- mysql - MySQL Workbech ERROR 1064 Insert 问题不知道出在哪里?