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

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

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


当前回答

如果你不想编辑自己的CSS文件并自己定义高度规则,最典型的CSS框架也解决了这个问题,body元素填充整个页面,以及其他问题,轻松地使用多种大小的视口。

例如,Tacit CSS框架解决了这个问题,你不需要定义任何CSS规则和类,你只需要在HTML中包含CSS文件。

其他回答

请检查这个:

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

或者尝试新的方法Viewport height:

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

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

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

我在每个CSS文件的开头使用的是以下内容:

html, body{
    margin: 0;

    padding: 0;

    min-width: 100%;
    width: 100%;
    max-width: 100%;

    min-height: 100%;
    height: 100%;
    max-height: 100%;
}

0的边距确保HTML和BODY元素不会被浏览器自动定位为在它们的左边或右边留有一些空间。

填充为0确保HTML和BODY元素不会因为浏览器默认值而自动将其中的所有内容下推或右推。

宽度和高度变量被设置为100%,以确保浏览器不会在预期实际有一个自动设置的边距或填充时调整它们的大小,设置最小值和最大值只是为了以防一些奇怪的,无法解释的事情发生,尽管你可能不需要它们。

这个解决方案也意味着,就像我在几年前第一次开始使用HTML和CSS时所做的那样,你不必给你的第一个<div>一个边距:-8px;使它适合浏览器窗口的角落。


在我发布之前,我看了看我的另一个全屏CSS项目,发现我在那里使用的只是body{margin:0;},没有其他东西,这在我工作的2年里工作得很好。

希望这个详细的回答能有所帮助,我能感受到你的痛苦。在我看来,浏览器应该在body/html元素的左侧(有时是顶部)设置一个看不见的边界是愚蠢的。

如果你想保持正文的边缘,不想要滚动条,使用下面的css:

html { height:100%; }
body { position:absolute; top:0; bottom:0; right:0; left:0; }

设置body {min-height:100%}将为您提供滚动条。

参见http://jsbin.com/aCaDahEK/2/edit?html,output上的演示。

所有的答案都是100%正确的,并且解释得很好, 但我做了一些很好的和非常简单的事情使它有响应。

这里元素将占用100%的视图高度,但当涉及到移动视图时,它看起来不太好,特别是在纵向视图(移动)上,所以当视图端口变得越来越小时,元素将会折叠并相互重叠。为了让它的响应更小,这里有代码。 希望有人能从中得到帮助。

<style>
.img_wrap{
      width:100%;
      background: #777;
}
.img_wrap img{
      display: block;  
      width: 100px;
      height: 100px;
      padding: 50px 0px;
      margin: 0 auto;
}
.img_wrap img:nth-child(2){
      padding-top: 0;
}
</style>

<div class="img_wrap">
  <img src="https://i.pinimg.com/originals/71/84/fc/7184fc63db0516a00e7d86900d957925.jpg" alt="">
  <img src="https://i.pinimg.com/originals/71/84/fc/7184fc63db0516a00e7d86900d957925.jpg" alt="">
</div>

<script>
   var windowHeight = $(window).height();
   var elementHeight = $('.img_wrap').height();

   if( elementHeight > windowHeight ){
       $('.img_wrap').css({height:elementHeight});
   }else{
       $('.img_wrap').css({height:windowHeight});
   }
</script>

这里是JSfiddle演示。