为此有一个CSS3属性,即background-size
(兼容性检查)。虽然可以设置长度值,但通常将其与特殊值contain
和一起使用cover
。在您的特定情况下,您应该使用cover
:
body {
background-image: url(images/background.svg);
background-size: cover; /* <------ */
background-repeat: no-repeat;
background-position: center center; /* optional, center the image */
}
contain
和的Eggsplaningcover
不好意思,我很抱歉,但是我将使用Biswarup Ganguly的当日照片进行演示。可以说这是您的屏幕,灰色区域在您的可见屏幕之外。为了演示,我将假定为16x9的比率。
我们想将上述当天的图片用作背景。但是,由于某种原因,我们将图像裁剪为4x3。我们可以将background-size
属性设置为固定的长度,但是我们将重点放在contain
和上cover
。请注意,我还假设我们没有破坏的宽度和/或高度body
。
contain
contain
将图像缩放,同时保留其固有的宽高比(如果有),使其达到最大尺寸,以使其宽度和高度都可以适合背景定位区域。
这样可以确保背景图片始终完全包含在背景定位区域中,但是,background-color
在这种情况下,可能会有一些空白空间填充:
cover
cover
在保留图像固有长宽比(如果有)的情况下,将图像缩放到最小尺寸,以使其宽度和高度都可以完全覆盖背景定位区域。
这样可以确保背景图像覆盖了所有内容。不会有可见的图像 background-color
,但是根据屏幕的比例,可能会截取大部分图像:
实际代码演示
div > div {
background-image: url(http://i.stack.imgur.com/r5CAq.jpg);
background-repeat: no-repeat;
background-position: center center;
background-color: #ccc;
border: 1px solid;
width: 20em;
height: 10em;
}
div.contain {
background-size: contain;
}
div.cover {
background-size: cover;
}
/********************************************
Additional styles for the explanation boxes
*********************************************/
div > div {
margin: 0 1ex 1ex 0;
float: left;
}
div + div {
clear: both;
border-top: 1px dashed silver;
padding-top:1ex;
}
div > div::after {
background-color: #000;
color: #fefefe;
margin: 1ex;
padding: 1ex;
opacity: 0.8;
display: block;
width: 10ex;
font-size: 0.7em;
content: attr(class);
}
<div>
<div class="contain"></div>
<p>Note the grey background. The image does not cover the whole region, but it's fully <em>contained</em>.
</p>
</div>
<div>
<div class="cover"></div>
<p>Note the ducks/geese at the bottom of the image. Most of the water is cut, as well as a part of the sky. You don't see the complete image anymore, but neither do you see any background color; the image <em>covers</em> all of the <code><div></code>.</p>
</div>
html, body { height: 100%; }
帮助吗?另外,咳嗽。