css grid布局增加边框,CSS Grid中每行之后的边框

范京
2023-12-01

3 个答案:

答案 0 :(得分:5)

您可以使用justify-content在内容之前和之后添加其他列,而不是1fr将内容置于中心位置。

然后将div之后的div和.line置于第二列的开头。

* {

box-sizing: border-box;

}

.outer {

width: 80%;

margin: 0 auto;

}

.wrapper {

border: 2px solid #f76707;

border-radius: 5px;

background-color: #fff4e6;

display: grid;

grid-template-columns: 1fr repeat(3, auto) 1fr;

}

.wrapper>div:not(.line) {

border: 2px solid #ffa94d;

border-radius: 5px;

background-color: #ffd8a8;

padding: 1em;

color: #d9480f;

}

.wrapper > div:first-of-type,

.line + div {

grid-column: 2;

}

.line {

grid-column: 1 / -1;

height: 1px;

background: black;

}

1111111
222
3333333333
4444
555555555
99999999999

答案 1 :(得分:1)

这是一个响应式解决方案,它可以处理variable个项目,并且无需添加愚蠢的硬编码div。基本上每个项目下面都有一行,复杂的部分是确定最后一行中不能有一行的项目。该示例使用flex-box(和LESS),但是此处不相关,它也适用于grid。

.grid {

display: flex;

}

.grid-item{

position: relative;

.one-col{

flex-basis: 100%/1;

&:nth-last-child(1){

&:after{ border-bottom: 0; }

}

}

.two-cols{

flex-basis: 100%/2;

&:nth-last-child(1),

&:nth-last-child(2):nth-child(odd){

&:after{ border-bottom: 0; }

}

}

.three-cols{

flex-basis: 100%/3;

&:nth-last-child(1),

&:nth-last-child(2):nth-child(3n+1),

&:nth-last-child(2):nth-child(3n+2),

&:nth-last-child(3):nth-child(3n+1){

&:after{ border-bottom: 0; }

}

}

.four-cols{

flex-basis: 100%/4;

&:nth-last-child(1),

&:nth-last-child(2):nth-child(4n+1),

&:nth-last-child(2):nth-child(4n+2),

&:nth-last-child(2):nth-child(4n+3),

&:nth-last-child(3):nth-child(4n+1),

&:nth-last-child(3):nth-child(4n+2),

&:nth-last-child(4):nth-child(4n+1){

&:after{ border-bottom: 0; }

}

}

@media screen and (max-width: @screen__sm) {

.grid-item .one-col;

}

@media screen and (min-width: @screen__sm) and (max-width: (@screen__md - 1)) {

.grid-item .two-cols;

}

@media screen and (min-width: @screen__md) and (max-width: (@screen__lg - 1)) {

.grid-item .three-cols;

}

@media screen and (min-width: @screen__lg) {

.grid-item .four-cols;

}

&:after{

content: "";

display: block;

position: absolute;

left: 0;

right: 0;

bottom: 0;

border-bottom: solid 1px black;

}

答案 2 :(得分:1)

我使用nth-of-type并将该行切换为其他类型()取得了一些成功。

我还为行跨越添加了第一和第六列,

而其他项只占据第2-5列。





* {

box-sizing: border-box;

}

.outer {

width: 80%;

margin: 0 auto;

}

.wrapper {

border: 2px solid #f76707;

border-radius: 5px;

background-color: #fff4e6;

display: grid;

grid-template-columns: 1fr repeat(3, auto) 1fr;

justify-content: center;

}

.wrapper>div {

border: 2px solid #ffa94d;

border-radius: 5px;

background-color: #ffd8a8;

padding: 1em;

color: #d9480f;

}

.wrapper>div:nth-of-type(3n+1) {

grid-column: 2;

}

.line {

grid-column: 1/6;

height: 2px;

border-bottom: 1px solid black;

}

1111111
222
3333333333
4444
555555555
6666666
77777
888888888
99



 类似资料: