FirefoxとIEで完全に機能する次のレイアウトがあります。
残念ながら、Chromeではかなり壊れています。つまり、親の高さが100%であっても、濃い青色のコンテナは折りたたまれています。
私はこのアプローチを試しましたが、運がありませんでした。他のブラウザで壊さずに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>
質問は言う:
FirefoxとIEで完全に機能する次のレイアウトがあります。残念ながら、Chromeでは壊れています。つまり、親の高さが100%であっても、紺色のコンテナは折りたたまれています。
Actually, an argument could be made that the opposite is true: Chrome has it right, while Firefox and IE are "broken".
First, here's the solution:
.item3 { height: 100%; }
Now let's look at your document structure and the heights applied:
<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 -->
...
...
...
As per the CSS specification, when using percentages to set the height
of an element (like you are doing with .container
), the parent element must also have an explicit height. In reference to your collapsed div
, its parent (.item3
) does not have a defined height.
From the 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.
In terms of the height
property, it would appear from this example that Chrome defines "containing block" as "parent", while Firefox and IE define "containing block" as "ancestor", or they respect flex heights as a reference for percentage heights.
したがって、div
紺色の境界線(.container column c2
)のあるにはコンテンツがなく、その親には高さが指定されていないため、Chromeでは高さがなく、ボックスが折りたたまれます。
ただし、.item3
折りたたまれたボックスの親であるの高さを指定することにより、高さはすべてのブラウザーで機能します。
更新
詳細:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加