我在父div内有三个div,它们使用以下命令隔开:
display: flex; justify-content: space-between;
但是,父div上有一个:after,这使三个div不会超出父div的边缘。有没有办法让flexbox忽略:before和:after?
:after
:before
.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>
在CSS中,目前没有100%可靠的方法来防止伪元素影响justify-content: space-between计算。
justify-content: space-between
::before并::after在柔性容器伪元素变得弯曲的物品。
::before
::after
从规格:
4.弹性项目 flex容器的每个流入子元素都将成为一个flex项目。
4.弹性项目
flex容器的每个流入子元素都将成为一个flex项目。
换句话说,处于正常流中(即,未绝对定位)的伸缩容器的每个子级都被视为伸缩项目。
大多数(如果不是全部)浏览器会将其解释为包括伪元素。该::before伪是首个柔性项目。该::after项目是最后一个。
这是Firefox文档中有关此渲染行为的进一步确认:
流入::after和::before伪元素现在是弹性项目) (错误867454)。