【发布时间】:2020-06-16 05:39:16
【问题描述】:
我有一个带有display:flex; 的容器,在该容器中我有时会有 2 件物品,有时我会有 3 件物品。我正在使用justify-content:space-between;,我希望这两个项目以这种方式隔开。当有第 3 项时,我仍然希望那些原始 2 项为 space-between,然后我希望第 3 项脱离弹性流程。为了做到这一点,我在第三项使用position:absolute;。在 Chrome/Firefox/Safari 中这工作正常,但在 IE 中,绝对定位的项目采用space-between,因此第二个元素元素的定位是关闭的(它直接放置在容器的中间)。我该如何解决这个问题?我对替代解决方案持开放态度,但我无法更改 HTML 的结构,因此它必须是基于 CSS 的解决方案。
.flex {
display:flex;
justify-content:space-between;
width:250px;
border:1px solid black;
padding:5px;
margin:30px auto;
position:relative;
}
.flex.abs {
padding-left:40px;
}
.flex.abs div:first-child {
position:absolute;
left:-30px;
}
<div class="flex">
<div>Item 1</div>
<div>Item 2</div>
</div>
<div class="flex abs">
<div>Absolute</div>
<div>Item 1</div>
<div>Item 2</div>
</div>
【问题讨论】:
-
可以张贴一张您需要的图片吗?
-
它在 Chrome 中看起来和预期的一样(只有非绝对定位的元素在使用
space-between)我添加了一个来自 Chrome 的屏幕截图以显示所需的输出 -
但在 chrome 中仍然将第 1 项向右推一点
-
@ToniMichelCaubet 这是因为需要
padding-left:40px;。
标签: css internet-explorer flexbox