html - 在 CSS 网格中居中项目
问题描述
https://codepen.io/joseph-van-den-avont/pen/QWvraWR
我使用 display:grid 制作了这个容器,但我似乎无法弄清楚如何将网格中的项目水平居中。我尝试过使用 justify-content:center 但它不适用于当前的编码方式,而且我没有足够的经验知道如何改变自己以使其工作。我是一个初学者,所以任何帮助将不胜感激;)
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-gap: calc(2em + 2vh) calc(1.5em + 1vmin);
grid-auto-flow: row dense;
}
.card__image {
display: block;
max-width: 60%;
margin: auto;
}
.card {
display: inline-block;
}
/* ==== Styles Related to the callout ==== */
.grid .card:nth-child(14) {
grid-column: -1;
grid-row: span 2;
align-self: center;
}
@media (min-width: 712px) {
.grid .card:nth-child(14) {
grid-column: -1;
}
}
.grid .card:nth-child(14) .card__image {
margin: 0 auto;
object-fit: cover;
}
@media (min-width: 712px) {
.grid .card:nth-child(14) .card__image {
height: 100%;
}
}
/* ==== Additional Styles not related to grid layout ==== */
.container {
display: grid;
grid-template-columns: minmax(1em, 1fr) minmax(min-content, 1200px) minmax(1em, 1fr);
grid-template-areas: "l-gutter heading r-gutter" "l-gutter content r-gutter";
grid-row-gap: 1em;
}
.grid {
grid-area: content;
background-color: #b96517;
margin: 200px 3% 2em 3%;
list-style-type: none;
border: double 10px white;
padding: 2%;
}
.card__link {
text-align: center;
color: inherit;
text-decoration: none;
}
.card__link:hover {
color: #2d2d2d;
}
.card__link:hover .card__image {
transform: scale(1.04);
clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 90%, 0 100%);
}
.card__link:hover .card__text {
transform: rotate(2deg) translate3d(3%, 1%, 0) scale(1.02);
}
.card__link:hover .card__price {
transform: rotate(-2deg) translate3d(-3%, -1%, 0) scale(1.02);
}
.card__image {
clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 100%, 0 100%);
transition: transform 200ms ease-out, clip-path 200ms ease-out;
background-color: white;
border-radius: 50%;
;
}
.card__text {
padding: 1em 0 0.5em;
font-weight: 400;
color: white;
transition: transform 300ms ease-out;
}
<ul class="grid">
<li class="card">
<a class="card__link" href="#">
<img class="card__image" src="https://upload.wikimedia.org/wikipedia/commons/1/10/Red_Color.jpg" />
<div class="card__text">red</div>
</a>
</li>
<li class="card">
<a class="card__link" href="#">
<img class="card__image" src="https://upload.wikimedia.org/wikipedia/commons/1/10/Red_Color.jpg" />
<div class="card__text">red</div>
</a>
</li>
<li class="card">
<a class="card__link" href="#">
<img class="card__image" src="https://upload.wikimedia.org/wikipedia/commons/1/10/Red_Color.jpg" />
<div class="card__text">red</div>
</a>
</li>
</ul>
解决方案
我使用了 display flex,而不是网格。
.grid {
display: flex;
justify-content:center;
align-items:center;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-gap: calc(2em + 2vh) calc(1.5em + 1vmin);
grid-auto-flow: row dense;
}
推荐阅读
- android - 片段中的空包
- sql - SQL Server OPENXML v XQUERY 性能
- python - pyTelegramBotAPI - 如何发送消息
- javascript - 在“空” StringBuilder 中附加多个字符串
- sharepoint-online - 更新 Sharepoint 列表、视图、webpart 中的修改,自动化脚本和将应用程序表单用于生产
- mysql - SQLError - 创建外键
- php - yii2 kartik select2 小部件不显示列表的第一个元素
- html - 如何在导航栏上的“服务”下方的导航栏中移动 SEO 和 PPC
- python - 根据另一列numpy中的阈值和条件计算累积和
- sql-server - 我可以在单台电脑上创建额外的 SQL Server 以使用 SQL Server 身份验证而不是 Windows 身份验证进行测试吗?