css - 如何在 Material UI 网格中应用装订线而不是边距?
问题描述
我一直在努力让我的响应式布局正常工作!但是,当我使用 class=spotlight 对 Grid 容器应用间距时,事情就会变得不协调。如何将间距应用到排水沟(即聚光灯容器网格内的网格项目之间)而不是边距(即网格外)。这是我的代码:
import React from "react";
import { Grid, makeStyles, Typography } from "@material-ui/core";
import MasterLayout from "../components/MasterLayout";
import ContentThumbnail from "../components/ContentThumbnail";
import ContentList from "../components/ContentList";
const useStyles = makeStyles((theme) => ({
masterLayout: {
padding: theme.spacing(3),
},
spotlight: {},
}));
const DefaultDashboard = ({ padding }) => {
const classes = useStyles();
return (
<MasterLayout>
{/*Top row with right bar */}
<Grid
container
className={classes.masterLayout}
spacing={3}
alignItems="flex-start"
>
{/* Spotlight section */}
<Grid container xl={8} lg={12} item className={classes.spotlight}>
<Grid item xs={12}>
<Typography variant="h3">Spotlight</Typography>
</Grid>
<Grid item xl={3} lg={3} md={3} xs={6}>
<ContentThumbnail />
</Grid>
<Grid item xl={3} lg={3} md={3} xs={6}>
<ContentThumbnail />
</Grid>
<Grid item xl={3} lg={3} md={3} xs={6}>
<ContentThumbnail />
</Grid>
<Grid item xl={3} lg={3} md={3} xs={6}>
<ContentThumbnail />
</Grid>
</Grid>
{/* List section 1 */}
<Grid container item xl={4} lg={3} md={6} xs={12}>
<Grid item xs={12}>
<Typography variant="h3">Title 2</Typography>
</Grid>
<Grid item xs={12}>
<ContentList />
</Grid>
</Grid>
{/* List section 2 */}
<Grid container item xl={4} lg={3} md={6} xs={12}>
<Grid item xs={12}>
<Typography variant="h3">Title 2</Typography>
</Grid>
<Grid item xs={12}>
<ContentList />
</Grid>
</Grid>
{/* List section 3 */}
<Grid container item xl={4} lg={3} md={6} xs={12}>
<Grid item xs={12}>
<Typography variant="h3">Title 3</Typography>
</Grid>
<Grid item xs={12}>
<ContentList />
</Grid>
</Grid>
{/* List section 4 */}
<Grid container item xl={4} lg={3} md={6} xs={12}>
<Grid item xs={12}>
<Typography variant="h3">Title 4</Typography>
</Grid>
<Grid item xs={12}>
<ContentList />
</Grid>
</Grid>
</Grid>
</MasterLayout>
);
};
export default DefaultDashboard;
非常感谢,
凯蒂
解决方案
TL;DR:覆盖您的 Grid 项目的样式:
const useStyles = makeStyles((theme) => ({
//...
gutter:{
marginLeft: 80, // or something
'&:first-child':{
marginLeft: 0,
}
}
}));
//...
<Grid ... item classes={{item:classes.gutter}}>
以下网格项目有排水沟(蓝色轮廓之间的排水沟宽度为 80 像素,但第一个):
NL;PR:看看这个pastebin。我查看了 Grid API,classes 对象允许您自定义组件的内部样式。我添加了一个伪类来为除第一个之外的所有孩子提供一些间距,从而添加内部排水沟。
推荐阅读
- r - 如何用来自另一个数据框的列注释列
- c - 如何访问结构中不是第一个的元素 - Qsort
- c++ - 无法更改 OpenCV 视频捕获分辨率
- android - Android WebView 和听筒上的音频输出
- c++ - C ++在字符串向量中查找字符串的频率
- java - 从java中的另一个线程中断一个线程?
- java - 在列表中找到 lenghtOfArgument 与 Java 中的 lambda
- python - 如何使返回布尔值不打印?
- javascript - 在 Javascript 中创建淡入/淡出效果
- google-workspace - 无法授予管理员权限 Google IAM 和管理员