使flex元素忽略子元素

Sea*_*ean 32 html css html5 flexbox

是否可以使flex元素忽略子元素,因此它的大小不会影响其他元素?

例如,我有一个包装器display: flex.它有标题,内容和页脚.

<div class="wrapper">
    <header></header>
    <article></article>
    <footer></footer>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望包装器忽略标头标签(标头将固定在窗口的顶部).该文章将设置为flex: 1占用其余空间,将页脚强制到页面底部.这是一些示例CSS:

.wrapper {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding-top: 50px; /* Accounts for header */
}

header {
    height: 50px;
    position: fixed;
    top: 0;
    width: 100%;
}

article {
    flex: 1;
}

footer {
    height: 50px;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以将标题移到包装器之外但是我有很多现有的代码会让它变得更加困难.我甚至可能要问什么?

小智 41

在你的.wrapper声明中flex-wrap: wrap.然后,对于标题,您可以添加样式flex-basis: 100%,这将强制标题下方的所有其他内容.

  • 这应该完全是公认的答案. (6认同)
  • @LisaCerilli,这是很好的信息,也是OP问题的一个很好的解决方案,但它仍然没有回答如何“忽略”元素的一般问题,这就是为什么它不是公认的答案的原因。 (5认同)

Aya*_*yan 21

使用position: absolute的子元素,从柔性计算中排除


小智 7

用于flex: 0 0 100%;您想要在新行中的子项并添加flex-wrap: wrap到包装纸上。


小智 5

您可以使用flex-shrink: 0子元素来防止它们收缩以填充容器。并flex-wrap: wrap在容器/包装纸上使用,这样您的孩子就会包裹起来。