gpt4 book ai didi

html - CSS 网格中的居中列

转载 作者:行者123 更新时间:2023-12-01 04:49:19 24 4
gpt4 key购买 nike

我正在尝试使用 native CSS 网格属性创建一个简单的 CSS 网格。它按我想要的方式工作,除了我想创建一个实用程序类,它可以使列在网格中居中。

有没有办法创建 __centered 实用程序类,以便我可以将它应用到中心列?我知道我可以在列之前添加空列 div,但我想要一个更简洁的解决方案。

.l-wrap {
width: 100%;
max-width: 1196px;
margin: 0 auto;
}

.l-grid {
display: grid;
grid-gap: 52px;
grid-template-columns: repeat(6, 1fr);
background-color: orangered;
}
.l-grid--col {
grid-column: auto/span 6;
}
.l-grid--col-1 {
grid-column: auto/span 1;
background-color: lightblue;
}
.l-grid--col-2 {
grid-column: auto/span 2;
background-color: lightblue;
}
.l-grid--col-3 {
grid-column: auto/span 3;
background-color: lightblue;
}
.l-grid--col-4 {
grid-column: auto/span 4;
background-color: lightblue;
}
.l-grid--col-5 {
grid-column: auto/span 5;
background-color: lightblue;
}
.l-grid--col-6 {
grid-column: auto/span 6;
background-color: lightblue;
}
<div class="l-wrap">
<div class="l-grid l-grid__centered">
<div class="l-grid--col-2">
<p>This should span 2 and be centered.</p>
</div>
</div>
</div>

最佳答案

CSS Grid 提供了 justify-itemsjustify-self属性,可用于沿行轴对齐网格项。

justify-items 适用于网格容器。 justify-self 适用于网格项。

所以你的工具类看起来像这样:

.l-grid__centered {
justify-self: center;
grid-column: 1 / -1;
}

这会告诉网格项将自身置于网格区域中从第一列到最后一列的行的中心。 ( Negative integer values on grid-column and grid-row start the count from the end side. )

.l-wrap {
width: 100%;
max-width: 1196px;
margin: 0 auto;
}

.l-grid {
display: grid;
grid-gap: 52px;
grid-template-columns: repeat(6, 1fr);
background-color: orangered;
}
.l-grid--col {
grid-column: auto/span 6;
}
.l-grid--col-1 {
grid-column: auto/span 1;
background-color: lightblue;
}
.l-grid--col-2 {
grid-column: auto/span 2;
background-color: lightblue;
}
.l-grid--col-3 {
grid-column: auto/span 3;
background-color: lightblue;
}
.l-grid--col-4 {
grid-column: auto/span 4;
background-color: lightblue;
}
.l-grid--col-5 {
grid-column: auto/span 5;
background-color: lightblue;
}
.l-grid--col-6 {
grid-column: auto/span 6;
background-color: lightblue;
}

.l-grid__centered {
justify-self: center;
grid-column: 1 / -1;
}
<div class="l-wrap">
<div class="l-grid l-grid__centered">
<div class="l-grid--col-2">
<p>This should span 2 and be centered.</p>
</div>
</div>
</div>

jsFiddle demo

注意:实用程序类应用于网格项,而不是网格容器。此外,此方法破坏了原始内容的 2 列网格区域。居中的内容将能够扩展到整行。


或者,当使用六列网格时,要水平居中两列网格区域,您的实用程序类可以如下所示:

.__centered {
grid-column: 3 / span 2;
}

.__centered {
grid-column: 3 / -3;
}

.l-wrap {
width: 100%;
max-width: 1196px;
margin: 0 auto;
}

.l-grid {
display: grid;
grid-gap: 52px;
grid-template-columns: repeat(6, 1fr);
background-color: orangered;
}

.l-grid--col {
grid-column: auto/span 6;
}

.l-grid--col-1 {
grid-column: auto/span 1;
background-color: lightblue;
}

.l-grid--col-2 {
grid-column: auto/span 2;
background-color: lightblue;
}

.l-grid--col-3 {
grid-column: auto/span 3;
background-color: lightblue;
}

.l-grid--col-4 {
grid-column: auto/span 4;
background-color: lightblue;
}

.l-grid--col-5 {
grid-column: auto/span 5;
background-color: lightblue;
}

.l-grid--col-6 {
grid-column: auto/span 6;
background-color: lightblue;
}

.l-grid__centered {
grid-column: 3 / span 2;
text-align: center;
}
<div class="l-wrap">
<div class="l-grid">
<div class="l-grid--col-2 l-grid__centered">
<p>This should span 2 and be centered.</p>
</div>
</div>
</div>

jsFiddle demo

注意:此解决方案仅将偶数网格区域居中。

关于html - CSS 网格中的居中列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43982623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com