今天,我在应用视口高度时遇到了百分比高度的问题。
.min-vh-100 {
min-height: 100vh;
}
.vh-100 {
height: 100vh;
}
.h-100 {
height: 100%;
}
.bg-cover {
background-color: red;
}
.bg-container {
background-color: blue;
}
<!-- This doesn't work -->
<!-- The .bg-container doesn't fill the .bg-cover -->
<div class="min-vh-100 bg-cover">
<div class="h-100 bg-container"></div>
</div>
<hr />
<!-- This works -->
<!-- The .bg-container fills the .bg-cover -->
<div class="vh-100 bg-cover">
<div class="h-100 bg-container"></div>
</div>
我检查了多个文档链接宽度高度关键字,百分比,但找不到背后的原因。
所以,我想知道这个问题背后的关键原因。
啊,我找到了原因:
百分比:
指定用于确定所用值的百分比。百分比是根据生成的长方体的包含块的高度计算的。如果未显式指定包含块的高度(即,它取决于内容高度(,并且此元素不是绝对定位的,则百分比值将被视为"0"(表示"最小高度"(或"none"(用于"最大高度"(。
根据上述声明,解决此问题的简单方法是应用头寸:
.min-vh-100 {
min-height: 100vh;
}
.vh-100 {
height: 100vh;
}
.h-100 {
height: 100%;
}
.bg-cover {
background-color: red;
}
.bg-container {
background-color: blue;
}
.position-relative {
position: relative;
}
.position-absolute {
position: absolute;
width: 100%; /* or: left: 0; right: 0 */
}
<!-- Now, this works -->
<!-- The .bg-container fills the .bg-cover -->
<div class="min-vh-100 bg-cover position-relative">
<div class="h-100 bg-container position-absolute"></div>
</div>
<hr />
<!-- This works -->
<!-- The .bg-container fills the .bg-cover -->
<div class="vh-100 bg-cover">
<div class="h-100 bg-container"></div>
</div>