css - 为什么网格间隙会导致没有百分比的溢出?

标签 css css-grid

为什么我在以下代码段中的 X 轴上有溢出?
一旦我在我的 .box 网格容器上应用 grid-gap: 35px ,就会生成溢出。

.container {
  width: 500px;
  border: 1px solid #000;
  margin: 0 auto;
}
.box {
  display: grid;
  grid-template-columns: repeat(16, 1fr);
  background: #00f;
  gap: 35px;
}
.item {
  height: 50px;
  background: #0f0;
  text-align: center;
  line-height: 40px;
  vertical-align: middle;
}
.span4 {
  grid-column: span 4;
}
<div class="container">
  <div class="box">
    <div class="item span4">A</div>  
    <div class="item span4">B</div>  
    <div class="item span4">C</div>  
    <div class="item span4">D</div>  
  <div>  
</div>

最佳答案

这是因为网格元素(即 .container )不能小于它的内容(所有 .item 组合)。让我们在这里考虑一下您的情况。
容器宽度 = 500pxgrid-template-columnsgap 重复 16 次的 35px每个。如果我们在这里做数学运算,那就是 560px (16*35) 这将大于您的容器宽度( 500px )。
要解决此问题,您可以将容器宽度增加到 560px或按百分比制作,即 100%

.container {
  width: 100%; /*560px*/
  border: 1px solid #000;
  margin: 0 auto;
}
.box {
  display: grid;
  grid-template-columns: repeat(16, 1fr);
  background: #00f;
  gap: 35px;
}
.item {
  height: 50px;
  background: #0f0;
  text-align: center;
  line-height: 40px;
  vertical-align: middle;
}
.span4 {
  grid-column: span 4;
}
<div class="container">
  <div class="box">
    <div class="item span4">A</div>  
    <div class="item span4">B</div>  
    <div class="item span4">C</div>  
    <div class="item span4">D</div> 
  <div>  
</div>

关于css - 为什么网格间隙会导致没有百分比的溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63146001/

相关文章:

html - css-grid 以行而不是列呈现 div

css - 为什么 justify-items 和 justify-self 在 Sublime 中是无效的语法?

css - 修复了带有网格布局的导航栏

javascript - Iframe 100% 高度不起作用

css - 如何在电子邮件中使用 Materialize.css?

javascript - 如何在高度变化时改变同级高度

即使使用 -ms 前缀,CSS Grid 也无法在 IE11 和 Edge 上运行

css - 在 react.js 中拼接数组中的元素

css - @media min-width 被浏览器忽略

css - 使用 CSS Grid 每隔一行着色