如何将 Material-UI Grid 用于 SPA(负边距问题)

IT技术 javascript css reactjs material-ui
2021-05-06 13:14:11

我正在尝试仅Grid用于创建 SPA。我习惯了 material-uiGrid经常使用它,但是在我的新项目中,我不确定我做错了什么。

现在的问题是:

右边距

右侧有一个边距和一个水平滚动条。

我知道负边距限制,但是如果我对父元素应用填充(如文档所述),那么我的Grid元素将失去全宽功能:

使用填充

水平滚动条消失了,但是我的元素上有一个填充,如果我background color在这些元素之一中设置了 a ,它不适用于整个宽度,因为有一个填充。

使用overflow-x: hidden增加了第二个垂直滚动条,看来我必须垂直滚动两次才能滚动页面。

唯一的解决方案是使用Grid spacing={0},但是我没有得到节之间的间距,节Grid内的容器也不能使用spacing.

我正在实施的示例在此代码和框中:https ://codesandbox.io/s/competent-volhard-e5yls ? file =/ src/App.js

我的疑问是,只有一个页面和将它分开的部分是最好的解决方案。理想情况下使用 material-ui 组件之一。

非常感谢!

1个回答

将此添加到根样式以删除水平滚动条和边距。Material UI 添加了额外的元素来实现其样式,因此最好使用开发人员工具找出可能掩盖了您的 css 规则的内容。在这种情况下,根下方的 div 需要删除其边距并成为全宽。

root: {
  display: "flex",
  flexGrow: 1,
  "& > div": {
    width: "100vw",
    margin: "0"
  }
}

https://codesandbox.io/s/blue-dew-gpxy2?file=/src/App.js:279-318

也许阅读更多关于 MUI 样式 API 以及如何使用嵌套样式和规则的信息。