【发布时间】:2019-07-26 06:46:17
【问题描述】:
在下面的演示中,我希望将绿色框收紧以完全适合红色和蓝色框。
绿色框是我想用作页面中心列的弹性框。这个 flexbox 包含两个项目。
第一个是固定宽度的蓝色框。
第二个是红框。我希望这个item使用flexbox中的剩余空间,但最多达到一定的max-width。
但是,我希望 flexbox 容器将其宽度限制为 flex 项的大小。也就是说,我想让红框长到某个点,如果它有空间,然后让红蓝框决定绿框的宽度。
我尝试过但对我的用例不太适用的方法:
-
在
#column上设置max-width:元素#left不会一直存在,所以在这些情况下这个max-width会太大。 -
在
#column上设置width: fit-content:这会限制弹性框的大小。因此,如果#right不包含太多内容(如本例所示),#right将不会扩展到其max-width。 - 使用 CSS Grid:这对我正在处理的布局有一些其他的权衡,并不是一个很好的选择。
在我探索其他替代方案之前,是否有一个纯 CSS 解决方案来获得我所希望的?
body {
background: #ccc;
margin: 0;
}
#column {
background: #fff;
min-height: 50vh;
margin: 20vh auto;
justify-content: center;
display: flex;
border: 3px #8F8 solid;
}
#left {
border: 3px #F88 solid;
width: 120px; /* A fixed value */
}
#right {
border: 3px #88F solid;
max-width: 200px;
flex-grow: 1;
}
<div id='column'>
<div id='left'>
Left flex item:<br>Fixed width of 120px
</div>
<div id='right'>
Right flex item:<br>Expand up to 200px
</div>
</div>
【问题讨论】: