我有一个嵌套在列方向 flexbox 中的行方向 flexbox,但是当我想在孩子中使用 align-content
时,它不起作用。
当我用 display:flex
替换父母的 display:block
时,它起作用了。
在下面的代码中,我们可以看到 .row
align-content: flex-end;
不起作用。但是,如果我将 .column
display: flex;
替换为 --- display: block;
,则 align-content: flex-end;
可以工作
可以解决这个问题吗?
body {
background-color: grey;
}
.column {
display: flex;
flex-flow: column nowrap;
justify-content: flex-start;
align-items: stretch;
background-color: green;
}
.row {
display: flex;
flex-flow: row wrap;
justify-content: space-around;
align-content: flex-end;
align-items: center;
background-color: red;
}
.row-test {
min-height: 200px;
}
span {
width: 30%;
background-color: orange;
}
<body class="column">
<section class="row row-test">
<span>Test Test Test Test Test Test Test Test Test</span>
<span>Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test Test</span>
</section>
</body>
原文由 Jean-Louis De La Marre 发布,翻译遵循 CC BY-SA 4.0 许可协议
事实上
align-content
在主 flex 容器切换到display: block
时“工作”只是一个浏览器错误。它根据需要将 flex 项目移动到底部,但 仅限于 Firefox 。
在 Chrome 中它什么都不做,这是正确的行为(根据规范)。
在 IE11 中,它将项目移到顶部(也是不合格的)。
这些错误和不一致不应作为指导依据,因为它们无助于解释
align-content
属性的工作原理。在 单行 flex container 中,就像问题中的
align-content
没有效果。要使用的属性是align-items
。在 多行 flex 容器中,要使用的属性是
align-content
。此外,
align-self
属性与align-items
密切相关。一个旨在覆盖另一个。它们一起发挥作用。从规格:
就这个问题而言,忘记
align-content
。它是无用的(除非你的 flex 项目包装)。只需使用
align-items: flex-end
(或align-self: flex-end
在span
上):