Answers:
尝试将html元素的高度也设置为100%。
html,
body {
height: 100%;
}
Body向其父级(HTML)寻求如何缩放动态属性,因此HTML元素也需要设置其高度。
但是,身体的内容可能需要动态更改。将最小高度设置为100%将实现此目标。
html {
height: 100%;
}
body {
min-height: 100%;
}
body {min-height}
版本,则不能使用.body-child{height: 100%}
把戏。
作为将html
和body
的高度都设置为的替代方法100%
,您还可以使用视口百分比长度。
5.1.2。视口百分比长度:“ vw”,“ vh”,“ vmin”,“ vmax”单位
视口百分比长度相对于初始包含块的大小。更改初始包含块的高度或宽度时,将对其进行相应缩放。
在这种情况下,您可以使用值100vh
-这是视口的高度。
body {
height: 100vh;
padding: 0;
}
body {
min-height: 100vh;
padding: 0;
}
大多数现代浏览器都支持此功能- 可以在此处找到支持。
margin: 0;
边框以避免在右侧出现持久的垂直滚动条。
如果您有背景图片,则需要设置该图片:
html{
height: 100%;
}
body {
min-height: 100%;
}
这样可以确保当内容高于视口时,您的body标签可以继续增长,并且当您向下滚动时,背景图像可以继续重复/滚动/任何内容。
请记住,如果您必须支持IE6,则需要找到一种方法以适应height:100%
身体,无论如何IE6都height
一样min-height
。
body{min-height: 100vh}
body { height: auto; }
滚动条不显示在FireFox中。除此之外,效果很好。
如果要在正文上保留边距并且不希望使用滚动条,请使用以下CSS:
html { height:100%; }
body { position:absolute; top:0; bottom:0; right:0; left:0; }
设置 body {min-height:100%}
将为您提供滚动条。
height: auto;
了在body
条款以及用于滚动条到现在弹出。
经过各种场景的测试,我相信这是最好的解决方案:
html {
width: 100%;
height: 100%;
display: table;
}
body {
width: 100%;
display: table-cell;
}
html, body {
margin: 0px;
padding: 0px;
}
动态变化是,如果html
和body
元素的内容溢出,它们将自动展开。我在最新版本的Firefox,Chrome和IE 11中对此进行了测试。
请在此处查看完整的小提琴(对于您讨厌的表,您可以随时将其更改为使用div):
https://jsfiddle.net/71yp4rh1/9/
话虽如此,这里发布的答案存在几个问题。
html, body {
height: 100%;
}
如果它们的内容溢出,则使用上述CSS将导致html和body元素不会自动展开,如下所示:
https://jsfiddle.net/9vyy620m/4/
滚动时,注意到重复的背景吗?发生这种情况是因为body元素的高度没有由于其子表溢出而增加。为什么它不像其他任何块元素一样展开?我不确定。我认为浏览器处理不正确。
html {
height: 100%;
}
body {
min-height: 100%;
}
如上所示将最小高度设置为100%会导致其他问题。如果这样做,则不能指定子div或表占据百分比高度,如下所示:
https://jsfiddle.net/aq74v2v7/4/
希望这对某人有帮助。我认为浏览器处理不正确。我希望如果孩子溢出,身体的高度会自动调整为逐渐变大。但是,当您使用100%的高度和100%的宽度时,似乎不会发生这种情况。
height: 100vh
也不是解决方案。将顶部容器设置得很100vh
高,100vw
如果容器具有滚动条,则可能会导致问题-它将超出其应有的大小(并且可能会导致不必要地显示滚动条)。这height: 100vh
也给我们在较新的Android设备(例如,装有Android 9的Xiaomi Mi 9)上造成了问题,在该设备上容器将比屏幕本身大,并使文档主体不必要的垂直滚动条。
实际上,在我使用的每个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元素不会因为浏览器的默认设置而自动向下或向右推送其中的所有内容。
将width和height变量设置为100%,以确保浏览器不会因为预期实际具有自动设置边距或填充而调整它们的大小,并且设置了min和max以防万一发生一些奇怪的无法解释的事情,尽管您可能不需要它们。
该解决方案也意味着,像我一样,当我第一次开始对HTML和CSS几年前,你会不会给你的第<div>
一个margin:-8px;
以使其适合在浏览器窗口的角落。
在发布之前,我查看了我的另一个全屏CSS项目,发现在那里使用的东西只是body{margin:0;}
一无是处,在我从事该项目的两年中,它一直运行良好。
希望这个详细的答案能对您有所帮助,让我感到您的痛苦。在我看来,浏览器应该在body / html元素的左侧(有时是顶部)设置一个不可见的边界,这是愚蠢的。
width: 100%
body和html元素的可能目的是什么?是的,我知道,从实际的角度来看,body { margin: 0; }
在大多数情况下就足够了。我只是想更全面地了解。
快速更新
html, body{
min-height:100%;
overflow:auto;
}
当今CSS的更好解决方案
html, body{
min-height: 100vh;
overflow: auto;
}
overflow: auto
在这里做魔术。顺便说一句,我使用Chrome。
您还可以根据需要使用JS
var winHeight = window.innerHeight ||
document.documentElement.clientHeight ||
document.body.clientHeight;
var pageHeight = $('body').height();
if (pageHeight < winHeight) {
$('.main-content,').css('min-height',winHeight)
}
请检查以下内容:
* {margin: 0; padding: 0;}
html, body { width: 100%; height: 100%;}
或尝试新方法视口高度:
html, body { width: 100vw; height: 100vh;}
视口:如果您使用的视口意味着屏幕的任何大小的屏幕内容都会全屏显示。
width: 100%
body和html元素的可能目的是什么?
我会用这个
html, body{
background: #E73;
min-height: 100%;
min-height: 100vh;
overflow: auto; // <- this is needed when you resize the screen
}
<html>
<body>
</body>
</html>
浏览器将使用,min-height: 100vh
并且如果某种程度上浏览器较旧,min-height: 100%
则将成为备用。
的overflow: auto
,如果你想身体和HTML当调整屏幕(到例如移动的大小)扩大其高度是必要的
所有答案都是100%正确并且得到了很好的解释,但是我做得很好并且非常简单,以使其具有响应能力。
在这里,元素将占据视口高度的100%,但在移动视图中,它在纵向视图(mobile)上看起来并不是特别好,因此,当视口变小时,该元素将折叠并彼此重叠。因此,使响应速度变慢的是代码。希望有人能从中获得帮助。
<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>
关于底部的额外空间:您的页面是ASP.NET应用程序吗?如果是这样,您的标记中可能几乎包装了所有内容。别忘了为表单设置样式。添加overflow:hidden;
到表单可能会删除底部的多余空间。
CSS3有一个新方法。
height:100vh
它使ViewPort 100%等于高度。
所以你的代码应该是
body{
height:100vh;
}