我关于stackoverflow的第一个问题,所以如果我在提出这个问题时犯了任何错误,请在下面评论。我使用的技术栈由 node-scss、reactv16.3 和 typescriptv3.7 组成。我正在制作我的网站主页,当前状态如下图所示: 点击此处查看图片
我想要做的是将最后一行中的元素(当元素尚未覆盖该行时)对齐到中心。我当前用于橙色渐变框(每个橙色框都是模式链接)的 jsx(因为我正在使用 react)是:
import * as React from "react";
import { Link } from "react-router-dom";
import "./modeGallery.scss";
import toUrl from "../../../util/toUrl";
export interface ModeLinkProps {
modeName: string;
mainUINameOnModeClick: string;
}
const ModeLink: React.SFC<ModeLinkProps> = ({
modeName,
mainUINameOnModeClick: screenNameOnModeClick,
}) => {
const url = `${modeName}/${screenNameOnModeClick}`;
return (
<Link to={toUrl(url)}>
<h3>{modeName}</h3>
</Link>
);
};
const ModeGallery: React.FC = () => {
return (
<section className="gallery">
<ModeLink modeName="VS AI" mainUINameOnModeClick="customize" />
<ModeLink modeName="Campaign" mainUINameOnModeClick="play" />
<ModeLink modeName="Campaign" mainUINameOnModeClick="play" />
<ModeLink modeName="Campaign" mainUINameOnModeClick="play" />
<ModeLink modeName="Campaign" mainUINameOnModeClick="play" />
<ModeLink modeName="Campaign" mainUINameOnModeClick="play" />
</section>
);
};
export default ModeGallery;
请注意,如果我需要的比我现在需要的多,我只有这么多相等的框来测试布局系统是否可以工作。因此,删除这些框不是解决方案。我的这个组件的 scss 是:
@import "../base-variables/baseScreenSizes";
@import "../base-mixins/gradients";
$boxWidth: calc(180px + 5vw);
$boxShadowOffset: 10px;
section.gallery {
display: grid;
padding: 2em;
color: white;
grid-template-columns: repeat(auto-fill, minmax($boxWidth, 1fr));
grid-auto-rows: calc(10rem + 5vw);
column-gap: 5rem;
row-gap: 2rem;
justify-content: space-around;
> a {
padding: 0.8em;
border-radius: 20px;
box-shadow: -$boxShadowOffset $boxShadowOffset 16px red;
@include animatedLinearGradient($orangeCoralGradient, 3s);
h3 {
font-family: cursive;
font-size: 1.35rem;
margin-top: 0;
}
}
}
我在这里使用网格系统,因为它提供了惊人的响应性,因此更改为 flexbox 之类的东西也不是一种选择。
被提议为可能重复的答案对我不起作用,因为它只提供了一个使用 css 网格的解决方案,并且该解决方案对我不起作用。
那么我该怎么做才能将最后一行中的元素对齐到中心(同时保持它们之间的间隙)?