我在网页中使用径向渐变作为背景,如下所示:
background-image: -webkit-gradient(radial, 100% 100%, 10, 90% 90%, 600, from(#ccc), to(#000));
这个方法能够奏效,但是当内容没有填满整个页面时,渐变将会被截断。如何让 <body>
元素始终填满整个页面呢?
我在网页中使用径向渐变作为背景,如下所示:
background-image: -webkit-gradient(radial, 100% 100%, 10, 90% 90%, 600, from(#ccc), to(#000));
这个方法能够奏效,但是当内容没有填满整个页面时,渐变将会被截断。如何让 <body>
元素始终填满整个页面呢?
html, body {
margin: 0;
height: 100%;
}
html { height: 100%; }
就可以了。 - Ry-我们的网站有静态内容页面和通过 AJAX 加载内容的页面。在一个页面(搜索页面)上,当 AJAX 返回的结果超过页面容量或没有返回结果时,背景图片无法填满整个页面。因此我们需要应用以下 CSS 代码:
html {
margin: 0px;
height: 100%;
width: 100%;
}
body {
margin: 0px;
min-height: 100%;
width: 100%;
}
height
用于设置 html
元素的高度,min-height
用于设置 body
元素的最小高度。
width: 100%;
。 - Ry-margin: 0;
,不需要指定使用哪种单位的零。 - KameeCoding由于其他答案对我都无效,所以我决定将这个作为一个答案发布给其他遇到相同问题的人。html和body都需要设置min-height
,否则渐变不会填充整个body高度。
html {
/* To make use of full height of page*/
min-height: 100%;
margin: 0;
}
body {
min-height: 100%;
margin: 0;
}
当我将HTML(或HTML和body)的高度设置为100%时,
html {
height: 100%;
margin: 0;
}
body {
min-height: 100%;
margin: 0;
}
我必须将html和body都设置为100%。
目标是使 <body> 元素占用屏幕的可用高度。
如果您不希望内容超过屏幕高度,或者您计划使用内部可滚动元素,请设置
body {
height: 100vh;
}
body {
min-height: 100vh;
}
仅通过这一步骤就可以达到目标,尽管有可能并且很可能需要进行优化。
移除<body>的外边距。
body {
margin: 0;
}
有两个主要原因需要这样做。
P.S. if you want the background to be a radial gradient with its center in the center of the screen and not in the bottom right corner as with your example, consider using something like
body {
min-height: 100vh;
margin: 0;
background: radial-gradient(circle, rgba(255,255,255,1) 0%, rgba(0,0,0,1) 100%);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=">
<title>test</title>
</head>
<body>
</body>
</html>
我认为正确的方法是将CSS设置为以下内容:
html
{
overflow: hidden;
}
body
{
margin: 0;
box-sizing: border-box;
}
html, body
{
height: 100%;
}
在body级别上尝试使用视口(vh,vm)作为度量单位
html,body { margin: 0; padding: 0; } body { min-height: 100vh; }
在body的水平边距,填充和边框方面使用vh单位,并从min-height值中减去它们。
我曾经在body内的元素中使用vh,vm单位时得到过奇怪的结果,特别是在重新调整大小时。
html, body {
margin: 0;
height: 100%;
}
body {
border: solid red 5px;
border-radius: 2em;
}
html, body {
margin: 0;
height: 100%;
}
body {
box-sizing: border-box;
border: solid red 5px;
border-radius: 2em;
}
正如Martin所指出的那样,虽然overflow: hidden
并不是必要的。
(2018年 - 在Chrome 69和IE 11中测试)
body
标签添加了一个边框。如果没有这个边框,body
将会完全填充视口,可以通过添加背景颜色来查看。那个问题的正确答案已经在7年前被接受,并且仍然有效。 - Niss我尝试了以上所有解决方案,我不会贬低任何一种方法,但在我的情况下,它们都没有起作用。
对我来说,问题是由于 <header>
标签的 margin-top
为5em,而 <footer>
的 margin-bottom 为5em 导致的。我将它们移除,改为使用一些 padding
(分别为顶部和底部)。我不确定替换 margin 是否是解决问题的理想方法,但重点是,如果你的 <body>
中的第一个和最后一个元素有一些边距,你可能需要查看并删除它们。
我的 html
和 body
标签具有以下样式:
body {
line-height: 1;
min-height: 100%;
position: relative; }
html {
min-height: 100%;
background-color: #3c3c3c; }
body { width: 100%; height: 100%; }
没有生效吗? - Alexbody { width: 100%; height: 100%; }
不起作用。我猜我也必须将它应用到<html>
上。 - Ry-html{height:100%}
的答案。 - Temani Afif