[英]How can I set height:100% on child of flex item that has flex-grow:1?
[英]Flex-grow child with height 100% has a zero height in Safari
我有一个 flex(列)容器( .parent
),里面有两个元素( .row-1
, .row-2
)。 第一个元素.row-1
有一个固定的高度, flex-shrink
等于 1。第二行.row-2
的flex-grow
设置为 1。此外,第二行有一个高度等于 100% 的子元素. 预期的行为是子元素 ( .child
) 与其父元素 (即.row-2
) 的高度相同,这在 Chrome 和 Firefox 中会发生。 但是,在 Safari 中,子元素.child
的高度改为 0。 我在这里错过了什么吗?
这是我的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<style>
* {
margin: 0;
padding: 0;
}
.parent {
display: flex;
flex-direction: column;
background: red;
height: 100vh;
}
.row-1 {
flex-shrink: 1;
height: 40px;
background: green;
}
.row-2 {
flex-grow: 1;
background: yellow;
}
.child {
background: cyan;
height: 100%;
}
</style>
</head>
<body>
<div class="parent">
<div class="row-1"></div>
<div class="row-2">
<div class="child"></div>
</div>
</div>
</body>
</html>
我可以解决子元素没有占据 Safari 中第 2 行的全部高度的问题的唯一方法是强制第 2 行也为 flex 并设置 align-items:stretch 似乎被孩子继承好吧,如果你把高度:100% 出来。 但我必须设置宽度:在这种情况下为 100%,否则它似乎是自动的。
抱歉,我无法解释这种行为,修复可能不适合所有用例,但这里是:
* { margin: 0; padding: 0; }.parent { display: flex; flex-direction: column; background: red; height: 100vh; }.row-1 { flex-shrink: 1; height: 40px; background: green; }.row-2 { display: flex; flex-grow: 1; background: yellow; align-items: stretch }.child { background: cyan; width: 100%; }
<div class="parent"> <div class="row-1"></div> <div class="row-2"> <div class="child">child div</div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.