【发布时间】:2021-09-15 23:08:54
【问题描述】:
在 flex 孙子上使用 min-width 时,我发现有些奇怪。
我正在尝试创建一个包含侧边菜单和内容的 flex 布局:[ Side | Content ]
但是,我希望 Content 的孩子可以滚动。当我向所述元素添加 min-width 时,flex 会换行,使Content 换行在Side 下,而不是彼此相邻。
我期望发生的是,由于父级具有overflow: scroll 与孙级 min-width > 父级的组合,孙子级会获得水平滚动。
发生的情况是 flex 内容换行了。
是什么原因造成的,我怎样才能将它们与孙子卷轴保持在同一行而不换行?
// All JS just for DEMO purposes - not related to question
document.querySelector('button').addEventListener('click', () => {
const element = document.querySelector('.calendar > div');
element.style.minWidth = element.style.minWidth === 'initial' ? '1000px' : 'initial';
})
.container {
max-width: 550px;
}
.wrapper {
display: flex;
flex-wrap: wrap;
flex: 1 1 auto;
}
.col {
flex-basis: 0;
flex-grow: 1;
max-width: 100%;
background: cornflowerblue;
}
nav.col {
background: salmon;
}
.calendar {
overflow: auto;
}
/* Breaks wrap */
.calendar > div {
min-width: 1000px;
}
<!-- START Just for demo -->
<button>Toggle element min-width</button>
<!-- END Just for demo -->
<div class="container">
<div class="wrapper">
<nav class="col">
<ul>
<li>Some navigation</li>
<li>Some navigation</li>
<li>Some navigation</li>
</ul>
</nav>
<div class="col">
<h1>page title</h1>
<section class="calendar">
<div>asdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasdasd</div>
</section>
</div>
</div>
</div>
【问题讨论】: