このための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 */
}
以下のためのEggsplanation contain
とcover
駄洒落で申し訳ありませんが、私はデモのために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%; }
ヘルプ?また、咳。