在设计布局时,我将html, body个元素的height设置为100%,但在某些情况下,这失败了,那么应该使用什么呢?

html, body {
   height: 100%;
}

html, body {
   min-height: 100%;
}

Well, this is not opinion based as each method has its own flaws, so what's the recommended way to go f或 and why?

推荐答案

如果您试图将背景图像应用于填满整个浏览器窗口的htmlbody,则两者都不适用.改用这个:

html {
   height: 100%;
}

body {
   min-height: 100%;
}

我的理由是here分(其中我全面解释了如何以这种方式应用背景):

顺便说一下,您必须分别指定heightmin-heighthtmlbody的原因是因为这两个元素都没有任何固有高度.默认情况下,两者都是height: auto.它是具有height%高度的视口,因此从视口中提取height: 100%,然后作为最小值应用到body以允许滚动内容.

第一种方法是在两者上都使用height: 100%,防止body在其内容开始增长超过视口高度时扩展.从技术上讲,这不会阻止内容滚动,但会导致body在折叠下方留下间隙,这通常是不可取的.

第二种方法,在两者上都使用min-height: 100%,不会导致body扩展到html的全高,因为带有百分比的min-heightbody上不起作用,除非html有明确的height.

为了完整起见,section 10 of CSS2.1包含了所有的细节,但这是一本extremely的曲折读物,所以如果您对我在这里解释的以外的内容不感兴趣,可以跳过它.

Css相关问答推荐

如果父元素跨越所有网格列,子元素是否可以与网格一起工作?

如何仅以WooCommerce单一产品页面为目标?

当面板以Angular 上升时如何定位下拉面板

如何仅使用CSS Select 器根据列表中第n个项的子项属性 Select 该项

使用SVG以竖排书写模式创建渐变文本时,文本显示异常

将CSS栅格行高设置为其余视口高度

位置:固定元素只是不固定

.NET 8 预览版 6 中不使用新项目模板提供 Blazor CSS 文件

根据子索引计算变换 CSS 参数

如何在启动时滚动 div 的底部?

.SVG 文件对象在锚标签下可点击

如何使 css 不重复同一个类?

条件宽度和省略号不适用于样式化组件 - React.js

循环一个 sass/scss 变量以生成 css 变量

全部:初始与使用 CSS 重置

CSS动画恢复默认

flex-start 和基线有什么区别?

在 CSS 或 JavaScript 中反转图像的 colored颜色

透明的空心或切出的圆圈

让 div 扩展全高