我在flexbox列上遇到了麻烦,因为flex’d元素的子元素无法以height
百分比响应。我仅在Chrome浏览器中进行了检查,据我了解,这只是Chrome浏览器的问题。这是我的示例:
HTML
<div class='flexbox'>
<div class='flex'>
<div class='flex-child'></div>
</div>
<div class='static'></div>
</div>
CSS
.flexbox{
position:absolute;
background:black;
width:100%;
height:100%;
display: flex;
flex-direction:column;
}
.flex{
background:blue;
flex:1;
}
.flex-child{
background:red;
height:100%;
width:100%;
display:block;
}
.static{
background:green;
width:100%;
height:5rem;
}
我想要它,以便红色.flex-child
填充蓝色.flex
。为什么不起作用height:100%
?
TL; DR: 设置.flex
为display:flex
,并摆脱height:100%
on .flex-child
。[您可以在此处查看修改后的CodePen。]
工作原理:
我从这个类似的问题中学到,根据flexbox规范,align-self:stretch
值(flex’d元素的默认值)仅更改元素的cross-
size属性(在本例中为)的 使用值height
。但是,百分比是根据父级的cross-size属性的 指定值
(而不是其使用值)计算的。如果您曾经打开过检查器,并height:100%
在“样式” height:1200px
下但在“计算”下看到,则分别显示
指定的 值和 使用的 值。
Chrome在这方面似乎遵循规范。也就是说,将设置height:100%
为.flex-child
意味着指定height
的的100%.flex
。因为我们没有指定height
的.flex
,这意味着我们抓住了默认的100%height
,这是auto
。看看布局引擎为何变得困惑?
设置.flex
为display:flex
和height:100%
从中删除.flex-child
(这样就不会继续尝试设置的100%auto
)将.flex-child
填充全部.flex
如果这行不通:
如果您仅尝试填充.flex
,例如,这将无效。尝试设置.flex- child
为height:90%
,因为弯曲子级意味着将填充所有可用空间。我认为您也许可以绝对定位破解它,但这似乎也不起作用。您可以通过.flex
在我们称为的第二个孩子上添加.spacer
,然后将设置.spacer
为flex:1
和.flex- child
进行修改flex:9
(一定也要设置flex-direction:column
为.flex
)。hack,但这是我可以解决的唯一方法。这是CodePen。
希望我们不必再依赖于此,他们只是将规范更改为按预期执行更多操作。
我正在使用flexbox搭建一个网站的基本用户界面。与通常的电子邮件布局非常相似。 出于某种原因,列布局flexbox容器(,梅花色)的第二个子项(class,lightseagreen color)比其父项的高度更高,我不希望它这样做。 我制作了一个代码笔片段来显示这种行为。 我怎样才能防止绿色的孩子比它的李子父母有更高的身高?我希望孩子只是可以滚动,但不能比父母高。
我有一个问题,我假设将是一个相对简单的CSS布局。 我想要。。。 底部的页脚(固定高度) 左侧的导航条(固定宽度) 右侧的外部内容窗格(动态大小) 在内容窗格中。。。 顶部的缎带(固定高度) 内部内容div(动态大小) 我正在尝试使用flexbox来实现这一点,因为它似乎是目前最好的选择(网格太不稳定,并且没有得到很好的支持)。 问题是,我的内部内容div(实际上)在外部内容div中有好几层。这意
在另一个flex容器内的Flexbox列容器在Chrome中没有得到100%的高度,但在Firefox和Edge中都可以。 Codepen示例
我在flexbox数组中有一系列元素。每个元素都包含一张“卡片”,其高度各不相同。当我试图让卡片占据它们所在的flexbox子元素的剩余空间时,它们会溢出到下面一行的元素中。如果我指定所有flex子项都是100%高度,那么它们的高度实际上会折叠为它们内部卡的大小。 蓝色卡片的高度为100%。从字面上看,它们的高度是父母的100%,但这意味着它们会溢出。 我怎样才能让他们只扩展到他们父母的底部呢?
问题内容: 我使用此 CSS将最大高度设置为 谁能给我一个普遍的答案, 和 之间有什么区别? 问题答案: 这是W3Clink的解释: 以下算法描述了两个属性[min-height和max-height]如何影响’height’属性的使用值: 临时使用的高度是根据上面“计算高度和边距”下的规则计算的(不包括“最小高度”和“最大高度”)。 如果此暂定高度大于“最大高度”,则会再次应用上述规则,但是这次
问题内容: 我正在尝试在Flexbox中填充Flex项目的垂直空间。 不能满足要求的高度,但以下两种情况除外: 的高度为100%(这很奇怪,因为弹性商品默认情况下为100%,而且在Chrome中存在错误) 绝对位置也不方便 目前,该功能不适用于Chrome或Firefox。 问题答案: 采用 与David Storey的答案类似,我的解决方法是: 或者到,你可以使用只是在你想拉长项目。