一尘不染

伪元素破坏了justify-content:flexbox布局之间的空格

css

我在父div内有三个div,它们使用以下命令隔开:

display: flex;
justify-content: space-between;

但是,父div上有一个:after,这使三个div不会超出父div的边缘。有没有办法让flexbox忽略:before:after

.container {

  width: 100%;

  display: flex;

  justify-content: space-between;

  padding-top: 50px;

  background: gray;

}



.container div {

    background: red;

    height: 245px;

    width: 300px;

  }

.container:before {

    content: '';

    display: table;

  }

.container:after {

    clear: both;

    content: '';

    display: table;

  }


<div class="container">

  <div></div>

  <div></div>

  <div></div>

</div>

阅读 580

收藏
2020-05-16

共1个答案

一尘不染

简短答案

在CSS中,目前没有100%可靠的方法来防止伪元素影响justify-content: space-between计算。

说明

::before::after在柔性容器伪元素变得弯曲的物品。

从规格:

4.弹性项目

flex容器的每个流入子元素都将成为一个flex项目。

换句话说,处于正常流中(即,未绝对定位)的伸缩容器的每个子级都被视为伸缩项目。

大多数(如果不是全部)浏览器会将其解释为包括伪元素。该::before伪是首个柔性项目。该::after项目是最后一个。

这是Firefox文档中有关此渲染行为的进一步确认:

流入::after::before伪元素现在是弹性项目)
(错误867454)。

2020-05-16