gpt4 book ai didi

html - 百分比高度在 Chrome 中的嵌套 flexbox 布局中不起作用

转载 作者:搜寻专家 更新时间:2023-10-31 08:43:44 26 4
gpt4 key购买 nike

我有一个完全适用于 Firefox 和 IE 的以下布局: Firefox

不幸的是,它在 Chrome 中很糟糕,即深蓝色容器折叠起来,即使它的高度是其父容器的 100%: Chrome

我试过了 this approach ,但没有任何运气。有什么想法可以在 Chrome 上解决这个问题而不破坏其他浏览器吗?

html,
body {
height: 97%;
margin: 0;
padding: 0;
}

div {
border: 10px dotted teal;
}

.container {
display: flex;
border-color: tomato;
height: 100%;
}

.row {
flex-flow: row;
}

.column {
flex-flow: column;
}

.item1 {
flex: 1;
}

.item2 {
flex: 2;
}

.item3 {
flex: 3;
}

.c1 {
border-color: gold;
}

.c2 {
border-color: darkblue;
}
<div class="container">
<div class="item3">
<div class="container column c2">
<div class="item1 c1"></div>
<div class="item3"></div>
</div>
</div>
<div class="item1 c1"></div>
<div class="item2"></div>
</div>

最佳答案

问题是:

I have a following layout fully working in Firefox and IE. Unfortunately it is broken in Chrome, namely the dark blue container is collapsed even though it has height 100% of its parent.

实际上,可以提出相反的论点:Chrome 是正确的,而 Firefox 和 IE 是“坏的”。

首先,这是解决方案:

.item3 { height: 100%; }

现在让我们看看您的文档结构和应用的高度:

<html> <!-- height: 97% -->
<body> <!-- height: 97% -->
<div class="container"> <!-- height: 100%; -->
<div class="item3"> <!-- height: ?? -->
<div class="container column c2"> <!-- height: 100% ; this is the collapsed box -->
...
...
...

根据 CSS specification ,当使用百分比设置元素的 height 时(就像您使用 .container 所做的那样),父元素必须也有一个明确的高度。关于折叠的 div,其父级 (.item3) 没有定义的高度。

来自spec :

<percentage>
The percentage is calculated with respect to the height of the generated box's containing block. If the height of the containing block is not specified explicitly (i.e., it depends on content height), and this element is not absolutely positioned, the value computes to 'auto'.

auto
The height depends on the values of other properties.

height 属性方面,从这个例子可以看出,Chrome 将“包含 block ”定义为“父级”,而 Firefox 和 IE 将“包含 block ”定义为“祖先”,或者他们将 flex 高度作为百分比高度的引用。

因此,由于深蓝色边框的div(.container column c2)没有内容,而且它的parent没有指定高度,所以没有高度并且该框在 Chrome 中折叠。

但是,通过为折叠框的父级 .item3 指定高度,该高度适用于所有浏览器。

DEMO


更新

更多详情:

关于html - 百分比高度在 Chrome 中的嵌套 flexbox 布局中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31046621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com