我在绝对定位的父div
内有一个flexbox
。我希望flexbox
有一个computed width
,导致父div扩展,但这不会发生。 父div 有一些宽度,但它的宽度不足以容纳弹性框。
鉴于弹性框有四个子项,每个子项都有flex-basis: 100px
,并且flex-shrink: 0
,我希望弹性框的宽度为400px
,导致父div 扩展到内容宽度的400px
。相反,它正在扩展到看似任意的255px
。
.parent {
position: absolute;
padding: 10px;
background: red;
}
.flex {
display: flex;
}
.flex-child {
flex: 1 0 100px;
background: #EEE;
border: 1px solid black;
white-space: nowrap;
overflow: hidden;
}
<div class="parent">
<div class="flex">
<div class="flex-child">One</div>
<div class="flex-child">Two</div>
<div class="flex-child">Three (really really long)</div>
<div class="flex-child">Four</div>
</div>
</div>
您的代码在 Edge 中工作。
它在Firefox和Chrome中不起作用。
这似乎是这些浏览器中flex-basis
的错误。
有一个简单的解决方法:使用width
代替flex-basis
。
.parent {
position: absolute;
padding: 10px;
background: red;
}
.flex {
display: flex;
}
.flex-child {
/* flex: 1 0 100px; */
width: 100px;
flex-grow: 1;
flex-shrink: 0;
background: #EEE;
border: 1px solid black;
white-space: nowrap;
overflow: hidden;
}
<div class="parent">
<div class="flex">
<div class="flex-child">One</div>
<div class="flex-child">Two</div>
<div class="flex-child">Three (really really long)</div>
<div class="flex-child">Four</div>
</div>
</div>
js小提琴演示
另请参阅:
- 弹性基础和宽度有什么区别?
我能够使元素适合绝对定位元素的唯一方法是更改以下行
.flex-child {
flex: 1 1 100px;
...
}
之后,.flex
元素占据了.parent
元素,如果我增加任何宽度,红色区域就会扩大。
这对你有用吗?