我想让主体有100%的浏览器高度。我可以用CSS来做吗?

我试着设置高度:100%,但它不起作用。

我想为页面设置一个背景色来填充整个浏览器窗口,但如果页面内容很少,我就会在底部得到一个丑陋的白色条。


当前回答

请检查这个:

* {margin: 0; padding: 0;}    
html, body { width: 100%; height: 100%;}

或者尝试新的方法Viewport height:

html, body { width: 100vw; height: 100vh;}

视窗: 如果你使用视口意味着任何大小的屏幕内容都将达到屏幕的全高。

其他回答

尝试将html元素的高度设置为100%。

html, 
body {
    height: 100%;
}

主体通过其父(HTML)查看如何缩放动态属性,因此HTML元素也需要设置它的高度。

然而,body的内容可能需要动态更改。 将min-height设置为100%将实现这一目标。

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

我会用这个

html,身体{ 背景:#药剂; 最小高度:100%; 最小高度:100 vh; 溢出:汽车;// <-当你调整屏幕大小时,这是需要的 } < html > 身体< > < /身体> < / html >

浏览器将使用min-height: 100vh,如果浏览器有点旧,则min-height: 100%将作为备用。

溢出:auto是必要的,如果你想要身体和html扩大他们的高度当你调整屏幕的大小(例如移动大小)

在20多个答案之后,似乎没有一个人提到了我发现的最关键的因素——标记。

在尝试了这个问题和其他一些问题的基本每个答案之后,我重新构造了我的标记,如下所示:

<body>
  <div class="section1">
    <nav>
    </nav>
    ...
  </div>
  <div class="section2">
  </div>
</body>

本质上,它需要两个不同的外部容器。第一个容器用于包含导航栏,并将背景色/图像一直扩展到浏览器的高度,第二个容器用于包含“折叠以下”的所有内容——包括第二个背景色/图像。

这个解决方案允许第一个容器的背景一直扩展到底部,同时保持第二个容器的自由,以占用尽可能多的空间。

从这一点开始,唯一需要得到我和原始问题想要的结果的CSS如下:

body {
  height: 100%;
}

.section1 {
  height: 100%;
  background: black; /* for demo purposes */
}

.section2 {
  background: white; /* for demo purposes */
}

对于真正的纯粹主义者来说,这种方法尊重浏览器的默认边距,并防止由其他方法产生的不需要的滚动,除了随着内容的增长而增长。在Chrome, Safari和Firefox中测试。背景只是做做样子……

html { 显示:flex; flex-direction:列; 高度:100%; 背景:红色; } 身体{ flex: 1; 背景:绿色; }

请检查这个:

* {margin: 0; padding: 0;}    
html, body { width: 100%; height: 100%;}

或者尝试新的方法Viewport height:

html, body { width: 100vw; height: 100vh;}

视窗: 如果你使用视口意味着任何大小的屏幕内容都将达到屏幕的全高。