请不要投票关闭。这是关于为什么这不起作用的技术原因。我已经有了一个可行的解决方案,我不是在要求它。
我需要设置.wrapper高度的简单示例,至少是浏览器高度。
以下适用于 IE10-11、Edge、Firefox、Chrome(工作小提琴):
<!doctype html>
<html lang="it">
<head >
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Demo</title>
<style>
body {
margin: 0;
height: 100vh;
background-color: red;
}
.wrapper {
min-height: 100%;
background-color: green;
}
</style>
</head>
<body>
<div class="wrapper"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
但是如果我设置body为min-height而不是height(恕我直言,合理的),它就不再起作用(不工作小提琴)。为什么?它背后的技术原因是什么?
编辑 1
另一个工作小提琴,其中bodyhasmin-height: 100vh和.wrapperhas min-height: inherit。
另一个工作拨弄只有在.wrapper拥有min-height: 100vh。
该百分比是根据生成的框的包含块的高度计算的。如果没有明确指定包含块的高度(即它取决于内容高度),并且该元素不是绝对定位的,则百分比值被视为'0'(对于'min-height')或'none' (对于“最大高度”)。
所以这就是规则。该规则背后的推理非常简单,并且遵循 CSS 2 中的类似规则,必须避免循环依赖。
当指定容器的高度时,它不依赖于其内容的高度,因此可以安全地将其内容高度指定为该高度的百分比,而不会创建循环依赖。
但这不适用于仅指定容器的最小高度时。如果内容的高度大于 min-height,则容器的高度取决于内容的高度,如果是百分比,则内容的高度取决于容器的高度,并且您有循环依赖。所以它故意“不起作用”,以阻止这种情况的发生。
我们开始吧:我认为我发现了一个问题。小提琴
.wrapper {
min-height: 100vh;
background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
在我看来,某些 VH 的最小高度 - 视口高度不能与 % 重叠。
因此,只想将包裹的最小高度从 % 更改为 vh 。
希望我有所帮助。