【问题标题】:Get % to work correctly for child elements of flex items让 % 为弹性项目的子元素正常工作
【发布时间】:2015-06-16 10:22:16
【问题描述】:

弹性项目不允许 % 单位为其子元素工作,除非弹性项目具有设定的高度;然而,通常使用 flexbox 的原因是显式设置高度会很困难。是否有某种技巧可以使 flex-item 的高度和宽度可供 CSS % 使用?

示例在这里:http://jsfiddle.net/0bpr07cz/

HTML:

<div class="flex-container">
    <div class="flex-item">
        <div class="test-element"></div>
    </div>
    <div class="flex-item"></div>
</div>

CSS:

.flex-container {
display: flex;
width: 400px;
height: 400px;
background-color: pink;
}
.flex-item {
flex-grow: 1;
background-color: yellow;
}
.test-element {
height: 100%;
background-color: green;
}

如何使包含测试元素的弹性项目的高度可以被测试元素的“高度:100%”使用?我需要一个假设 flex-item 的高度未知的解决方案。

编辑:我应该提到 flex-item 的子项是其他人制作的小部件,因此更改子项的 css 不是最佳解决方案。

【问题讨论】:

  • 为什么不直接将.flex-item 设为另一个display: flex,然后再将.test-elements flex-grow 也设为?
  • 在真实代码中,flex-item的子元素是别人制作的widget;覆盖他们的 CSS,虽然我以前做过,但很乏味且容易出错。
  • .test-element 是否会在高度和宽度上填满flex-item?

标签: html css flexbox


【解决方案1】:

Example Fiddle

你试图在这里混合两种风格。为什么不继续“在 Flex 中思考”并嵌套您的 flex 项?

您的新 CSS

.flex-container {
    display: flex;
    width: 400px;
    height: 400px;
    background-color: pink;
}

.flex-item {
    flex-grow: 1;
    background-color: yellow;
    display: flex;
}

.test-element {
    background-color: green;
    flex-grow: 1;
}

【讨论】:

  • 对不起,我应该在我的问题中提到弹性项目的子项是其他人的代码,他们依赖于该元素的高度,可以按 % 计算。
  • 实际上这确实有效,因为 CSS % 单元不需要 flex-item 子项的高度,而是 JS(它访问 clientHeight 属性,虽然我不知道为什么CSS % 不做同样的事情)。
  • 实际上,高度只是绕过未设置的元素并将其从父级中拉出,您已将其设置为400px。这就是为什么它可以在没有 flex 的情况下工作。
猜你喜欢
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2018-05-06
  • 2018-02-12
  • 2019-04-29
  • 1970-01-01
相关资源
最近更新 更多