http://codepen.io/anon/pen/VpqegQ
HTML
<div class="flex1">
<div class="flex2">
<div>one</div>
<div>two</div>
<div>three</div>
<div>four</div>
<div class="zero">
<span>Zero Text</span>
</div>
</div>
</div>
CSS
.flex1 {
display: flex;
overflow-x: scroll;
margin: 0 auto;
outline: 1px solid #000;
width: 300px;
}
.flex2 {
display: flex;
margin-left: auto;
border: 3px solid #00cc00;
}
.flex2 > div {
width: 50px;
height: 100px;
outline: 1px solid #cc0000;
text-align: center;
flex-shrink: 0;
}
.flex2 > .zero {
width: 0;
position: relative;
}
.flex2 > .zero > span {
position: absolute;
width: 100px;
top: 20px;
transform: translateX(-50%);
}
我的情况是零宽度元素包含一个绝对定位的元素,它比零宽度容器宽,位于另一个带有overflow-x: scroll
的容器的边缘上要添加到父级的额外宽度。哇,这是一句话。
外部容器flex1
宽300像素,display: flex
,overflow-x: scroll
。
flex2
也是display: flex
,并margin-left: auto
将flex2
与flex
内的flex2
对齐。
flex2
正确对齐其容器的右侧。
问题是flex1
的最后一个孩子是零宽度。它包含一个更宽的绝对定位元素。然后,这会导致overflow: hidden
显示滚动条。
这是预期和/或有没有办法解决它而不将flex2
添加到header
?