【发布时间】:2018-06-27 01:25:27
【问题描述】:
考虑以下代码sn-p:
html {
margin: 0;
padding: 0;
background-color: blue;
}
body {
margin: 0;
padding: 0;
background-color: green;
min-height: 100vh;
}
<section style="min-height: 50px; background-color: pink;"></section>
正如预期的那样,body 元素以绿色填充整个视口,顶部有一个粉红色的 section 元素。
现在,假设您想做一些其他非常简单的事情,例如在部分元素中设置边距:style="min-height: 50px; background-color: pink; margin-bottom: 10px;"。出乎意料的是,来自 html 元素的蓝色条出现在视口底部。
html {
margin: 0;
padding: 0;
background-color: blue;
}
body {
margin: 0;
padding: 0;
background-color: green;
min-height: 100vh;
}
<section style="min-height: 50px; background-color: pink; margin-bottom: 10px;"></section>
问题 1) 为什么会出现这种行为?这对我来说没有意义。
纠正这种行为的一种方法是在 body 元素中添加填充和min-height calc() 调整:
html {
margin: 0;
padding: 0;
background-color: blue;
}
body {
margin: 0;
padding: 0;
padding-bottom: 1px;
background-color: green;
min-height: calc(100vh - 1px);
}
<section style="min-height: 50px; background-color: pink; margin-bottom: 10px;"></section>
但是,这个解决方案需要一个我不习惯的噱头。
问题 2 有没有更好的解决方案? (即:更直观,更易读)
【问题讨论】:
-
是我,还是在所有 3 个代码 sn-ps 中的视口底部没有蓝色条?对我来说,它们看起来完全一样