如何使用CSS将HTML元素的高度设置为100%

网站设计中常见的问题是“如何将元素的高度设置为100%”?

这可能看起来像一个简单的答案。 您只需使用CSS将元素的高度设置为100%,但这并不总是拉伸该元素以适应整个浏览器窗口。 让我们来看看为什么会发生这种情况,以及您可以做些什么来实现这种视觉风格。

像素和百分比

当您使用CSS属性和使用像素的值定义元素的高度时,该元素将占用浏览器中的垂直空间。

例如,一个高度为100px的段落; 在你的设计中将占用100像素的垂直空间。无论你的浏览器窗口有多大,这个元素的高度都是100像素。

百分比的工作方式与像素不同。 根据W3C规范,百分比高度是根据容器的高度计算的。 所以,如果你把一个段落的高度:50%; 在高度为100px的div内,段落高度为50像素,是其父元素的50%。

为什么百分比高度失败

如果你正在设计一个网页,并且你有一列你想占据整个窗口的高度,那么自然的倾向是增加一个高度:100%; 到那个元素。 毕竟,如果您将宽度设置为宽度:100%; 该元素将占据页面的整个水平空间,所以高度应该相同,对吧? 不幸的是,事实并非如此。

要理解为什么发生这种情况,您必须了解浏览器如何解释高度和宽度。 Web浏览器根据浏览器窗口打开的宽度来计算总可用宽度。 如果您未在文档上设置任何宽度值,则浏览器将自动流动内容以填充窗口的整个宽度(100%宽度是默认宽度)。

高度值的计算方式与宽度不同。 实际上,除非内容太长以至于超出视口(因此需要滚动条),或者Web设计者为页面上的元素设置了绝对高度,否则浏览器根本不评估高度。 否则,浏览器只是让内容在视口宽度内流动,直到结束。 高度实际上根本不计算。

在设置父元素时未设置高度的元素上设置百分比高度时会出现问题 - 换句话说,父元素具有默认高度:auto; 。 实际上,您要求浏览器根据未定义的值计算高度。 由于这将等于空值,结果是浏览器什么都不做。

如果要将网页的高度设置为百分比,则必须设置要定义高度的每个父元素的高度。 换句话说,如果你有这样一个页面:





内容在这里



您可能希望div和其中的段落具有100%的高度,但该div实际上有两个父元素:

和。 为了将div的高度定义为相对高度,您还必须设置body和html元素的高度。

所以你需要使用CSS来设置不仅div的高度,而且body和html元素。 这可能是一个挑战,因为您可以很快将所有设置为100%高度的设备都淹没,只是为了达到预期的效果。

处理100%高度时需要注意的一些事项

现在您已知道如何将页面元素的高度设置为100%,将页面元素的高度设置为所有页面可能会很令人兴奋,但您应该注意以下几点:

为了解决这个问题,你可以设置元素的高度。 如果将其设置为自动,则会在需要时显示滚动条,但如果不需要则会消失。 这可以修复视觉中断,但它会在您不想要的位置添加滚动条。

使用视口单位

解决这一挑战的另一种方法是使用CSS视口单元进行试验。 通过使用视口高度度量单位,可以调整元素的大小以占据视口的定义高度,并且视口将随着视口更改而变化! 这是在页面上获得100%高度视觉效果的好方法,但仍然可以灵活适用于不同的设备和屏幕尺寸。