修改:我最终选择Center and right align flexbox elements Michael_B回答方法#2
所以我有一个容器,其中有两个元素,一个红色和一个绿色框(宽度不固定)。我希望绿色盒子尽可能在容器中居中。当红色方框挡住时,绿色框就在旁边。
我知道如何做的唯一方法是将红色框设置为position: absolute
,但问题是当容器变得太小时,绿色框与红色框重叠。
我只支持现代浏览器(没有IE),所以欢迎使用flexboxes和其他新东西。
感谢。
.wrapper {
width: 600px;
height: 100px;
text-align: center;
position: relative;
border: 5px solid black;
}
.wrapper+.wrapper {
margin-top: 20px;
}
.wrapper:nth-child(2) {
width: 500px;
}
.wrapper:nth-child(3) {
width: 410px;
}
.align-left {
display: inline-block;
position: absolute;
left: 0;
background-color: red;
width: 100px;
height: 100%;
z-index: 0;
}
.centered {
display: inline-block;
background-color: green;
width: 300px;
height: 100%;
// so the overlap is more visual
z-index: 1;
position: relative;
}

<div class="wrapper">
<div class="align-left"></div>
<div class="centered">
</div>
</div>
<div class="wrapper">
<div class="align-left"></div>
<div class="centered">
</div>
</div>
<div class="wrapper">
<div class="align-left"></div>
<div class="centered">
</div>
</div>
&#13;