【发布时间】:2015-07-06 14:35:00
【问题描述】:
我有一些代码目前可以在 Chrome 稳定版上正确呈现。我收到了有关代码在 Beta 和 Dev 上运行不正确的报告,并且我能够在 Canary 上重现该问题。我发现this PSA 似乎与我的问题有关。所以,我的工作是假设这是一个更紧密地遵循规范而不是错误的更改。
我的软件仅针对 Google Chrome。因此,尽管具有向后兼容性会很好,但不一定需要强大的解决方案。
设置是:
- 父元素具有
display:flex、flex-direction: column并应用了max-height。 - 父级的深后代超过
max-height
而行为改变是:
- 在稳定状态下,
max-height被强制执行,孩子不会爆发。 - 在金丝雀上,
max-height被忽略并且孩子爆发。
我可以通过将max-height 应用于inner 元素来防止孩子爆发。但是,这是不可取的,因为我需要将max-height 的值减少footer 的高度,这在非人为的示例中不容易做到。
以下代码 sn-p 突出显示了我的问题:
.outer {
display: flex;
flex-direction: column;
max-height: 410px;
}
.inner {
display: flex;
flex-direction: column;
}
.content {
width: 200px;
height: 500px;
background-color: green;
}
.footer {
height: 20px;
width: 200px;
background-color: red;
}
<div class='outer'>
<div class='inner'>
<div class='content'>
</div>
</div>
<div class='footer'>
</div>
</div>
这是在 Chrome Canary(左)和 Chrome Stable(右)上呈现的屏幕截图:
有谁能告诉我如何调整此代码以使inner + footer 尊重max-height 的outer 值?
【问题讨论】:
-
内容 div 为必填项。实际的 HTML 标记看起来更像:gist.github.com/MeoMix/f6cbea85c7345236e74e 其中“#settingsDialog-panel”具有 max-height 属性,它试图在其中包含内容。此外,此更改破坏了我的代码的多个方面。我试图了解发生了什么,以便我可以在其他地方解决问题。 HTML 的布局可能因每个实例而异。
-
好吧,正如描述中所提到的,当我将动态内容加载到页脚中时,将 max-height 的值减小一个固定值是不可取的。按钮、复选框等。我希望从其内容中推断出它的高度,而不是必须明确说明它的高度。如果我必须开始指定值,那有点违背了 flex 的全部目的。 :(
标签: css google-chrome flexbox