有人可以解释一下为什么包装器中使用grid-gap会使项目溢出吗?手册只是说它在项目之间添加了空间,没有以任何方式扩展它们。
CODEPEN: Source
body {
margin: 0
}
.wrapper {
display: grid;
grid-template-columns: 50% 50%;
grid-gap: 10px;
border: 1px solid black;
padding: 10px;
margin: 0 auto;
max-width: 800px;
}
.header {
grid-column: 1/3;
background: red
}
.footer {
grid-column: 1/3;
background: green
}
.item {
padding: 10px
}
.content {
height: 180px
}
.image {
background: yellow
}
.desc {
background: blue
}
@media screen and (min-width:768px) {
.content {
grid-column: 1/3
}
}
<div class="wrapper">
<div class="item header">Header</div>
<div class="item content image">Image</div>
<div class="item content desc">Description</div>
<div class="item content image">Image</div>
<div class="item content desc">Description</div>
<div class="item footer">Footer</div>
</div>
答案 0 :(得分:1)
因此,原因实际上是您将列设置为使用父级宽度的50%,其中还包括间隙。对于CSS Grid,最好使用fr
单位来指定宽度相等的列。
在您的情况下,如果您使用1fr 1fr
或repeat(2, 1fr)
而不是50% 50%
,则实际上是告诉网格将其列设置为可用空间的一小部分,这将考虑到差距并且不会溢出父项。
body {
margin: 0
}
.wrapper {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 10px;
border: 1px solid black;
padding: 10px;
margin: 0 auto;
max-width: 800px;
}
.header {
grid-column: 1/3;
background: red
}
.footer {
grid-column: 1/3;
background: green
}
.item {
padding: 10px
}
.content {
height: 180px
}
.image {
background: yellow
}
.desc {
background: blue
}
@media screen and (min-width:768px) {
.content {
grid-column: 1/3
}
}
<div class="wrapper">
<div class="item header">Header</div>
<div class="item content image">Image</div>
<div class="item content desc">Description</div>
<div class="item content image">Image</div>
<div class="item content desc">Description</div>
<div class="item footer">Footer</div>
</div>