【发布时间】:2020-11-13 19:50:50
【问题描述】:
我遇到了position: absolute 的问题,我在任何地方都找不到解释为什么会发生的答案。
我在包装器中有一个 flexbox 容器,其中有两个子级,每个子级都设置为 flex-basis: 50%。当我在包装器 div 上设置 position: absolute 时,包装器会以不可预知的方式收缩。
请看下面的代码:
.outer-wrapper {
position: relative;
width: 100%;
}
.outer-wrapper .wrapper {
position: absolute;
}
.outer-wrapper .wrapper .flex-container {
display: flex;
}
.outer-wrapper .wrapper .flex-container .flex-item {
flex-basis: 50%;
}
<div class="outer-wrapper">
<div class="wrapper">
<div class="flex-container">
<div class="flex-item">
Some Text That Is Long
</div>
<div class="flex-item">
Some Text
</div>
</div>
<div class="flex-container">
<div class="flex-item">
Some Text
</div>
<div class="flex-item">
Some Text
</div>
</div>
</div>
</div>
删除 CSS 中的第 6 行会导致 flex-container 扩展到父级的全宽,并且每个 flex 子级占用 50% 的宽度,正如预期的那样。但是,当我将包装器 div 设置为 position: absolute 时,包装器 div 会缩小到任意宽度,并且 flex-children 中的文本会分成多行。
我的问题:
- 为什么在包装 div 上设置
position: absolute会导致包装 div 缩小到小于其内容? - 浏览器如何确定将包装 div 缩小到什么宽度?在我看来,它要么缩小到尽可能小而不在文本中引入换行符,要么缩小到尽可能小,同时仍然适合最长的单词,而是缩小到中间的某个地方(它只引入一串短单词中的一个换行符)。
- 有没有办法,在仍然以这种方式使用 flexbox 和
position: absolute时,强制浏览器不将包装器缩小到小于其内容(除非包装器上设置了最大宽度)?
非常感谢任何帮助!这让我发疯了!
【问题讨论】:
标签: css flexbox css-position