CSS Flexbox Gap - 影响宽度计算的间隙值[重复]

Posted

技术标签:

【中文标题】CSS Flexbox Gap - 影响宽度计算的间隙值[重复]【英文标题】:CSS Flexbox Gap - gap value affecting width calculation [duplicate] 【发布时间】:2021-09-01 13:22:51 【问题描述】:

我正在使用 flexbox 和新的 gap 函数在项目之间添加一些空间。我试图每行有 4 个项目,所以将项目宽度设置为 25% 像这样......

.container 
  display: flex;
  max-width: 800px;
  width: 100%;
  background: gold;
  flex-wrap: wrap;
  gap: 20px;


.item 
  width: 25%;
  background: teal;
<div class="container">

  <div class="item">
    Item 1
  </div>
  
  <div class="item">
    Item 2
  </div>
  
  <div class="item">
    Item 3
  </div>
  
  <div class="item">
    Item 4
  </div>
  
  <div class="item">
    Item 5
  </div>
  
  <div class="item">
    Item 6
  </div>
  
</div>

但是这给了我每行 3 个项目,我认为这是因为它在计算宽度时考虑了 gap 值。

我该如何解决这个问题?

【问题讨论】:

重复处理margin但问题和gap一样 【参考方案1】:

您可以从宽度中减去间隙。 20px 间隙 * 3 / 4(列)

.item 
   width: calc(25% - 15px);
   background: teal;

【讨论】:

我喜欢这个,而不是我本来可以接近它的方式,但效果非常好【参考方案2】:

您可以在 CSS 自定义属性中定义间隙,然后通过一些数学计算项目的宽度。

.container 
  --gap: 20px;
  --columns: 4;
  display: flex;
  max-width: 800px;
  width: 100%;
  background: gold;
  flex-wrap: wrap;
  gap: var(--gap);


.item 
  width: calc((100% / var(--columns)) - var(--gap) + (var(--gap) / var(--columns)));
  background: teal;
<div class="container">

  <div class="item">
    Item 1
  </div>
  
  <div class="item">
    Item 2
  </div>
  
  <div class="item">
    Item 3
  </div>
  
  <div class="item">
    Item 4
  </div>
  
  <div class="item">
    Item 5
  </div>
  
  <div class="item">
    Item 6
  </div>
  
</div>

【讨论】:

我还没有听说过自定义 css 属性,将做一些阅读。谢谢指点【参考方案3】:

考虑这种其他方法,它更容易。只需输入间隙值即可。

.container 
  display: grid;
  grid-template-columns: auto auto auto auto;
  max-width:800px;
  background-color:gold;
  gap:20px;


/* -- Select all <div> elements within the container -- */
.container > div 
  background-color: teal;
<div class="container">

  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
  <div>Item 4</div>
  <div>Item 5</div>
  <div>Item 6</div>

</div>

【讨论】:

以上是关于CSS Flexbox Gap - 影响宽度计算的间隙值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Tailwind CSS flexbox gap 不适用于 iPhone Chrome

如何检查 Flexbox 布局中的间隙支持

CSS 自动宽度不适用于 Flexbox

如何使用 CSS flexbox 设置固定宽度的列

Flexbox 列对齐项目的宽度相同但没有包装器居中(仅限 css)

CSS Flexbox 响应式布局和 % 宽度