width
プロパティを 100% に設定した場合は、画像はレスポンシブで、拡大・縮小します:
上の例は、画像は元のサイズよりも大きく拡大されることに注意してください。
この解決策として、多くの場合、代わりに max-width
プロパティを使用します。
max-width
プロパティを 100%に設定した場合、画像は、元のサイズから縮小されることがあっても、拡大されることはありません:
背景画像は、サイズ変更や拡大縮小に対応することができます。.
ここでは、3つの異なる方法示します:
1. background-size
プロパティを "contain" に設定した場合、 背景画像を拡大縮小し、
コンテンツ領域に合わせしようとします。
ただし、画像のアスペクト比(画像の幅と高さの比率)に変更はありません:
ここに、CSS のコードがあります:
div {
width: 100%;
height: 400px;
background-image: url('img_flowers.jpg');
background-repeat: no-repeat;
background-size: contain;
border: 1px solid red;
}
Try it Yourself ❯
2. background-size
プロパティを "100% 100%" に設定した場合、コンテンツ領域全体に広がるよう、背景画像を引伸ばします:
ここに、CSS のコードがあります:
div {
width: 100%;
height: 400px;
background-image: url('img_flowers.jpg');
background-size: 100% 100%;
border: 1px solid red;
}
Try it Yourself ❯
3. background-size
プロパティを "cover" に設定した場合、
コンテンツ領域全体に広がるよう、背景画像を拡大縮小します。
値 "cover" は、アスペクト比を維持しますので、背景画像の一部が切り取られる場合もあるので注意してください:
ここに、CSS のコードがあります:
div {
width: 100%;
height: 400px;
background-image: url('img_flowers.jpg');
background-size: cover;
border: 1px solid red;
}
Try it Yourself ❯
大きな画像は、コンピュータの大型画面では全く問題にならないかもしれませんが、小さなデバイスには役に立たないことがあります。 いずれにしろ縮小しなければならないのに、なぜ大きな画像をロードするのでしょうか? 負荷の軽減や、他の理由により、いろいろなデバイス用に異なった画像を表示するためにメディアクエリを使用することができます。
ここに、異なったデバイスで表示するための、大きな画像と、小さな画像があります:
/* For width smaller than 400px: */
body {
background-image:
url('img_smallflower.jpg');
}
/*
For width 400px and larger: */
@media only screen and (min-width: 400px)
{
body {
background-image: url('img_flowers.jpg');
}
}
Try it Yourself ❯
ブラウザの幅をチェックする min-width
の代わりに、デバイスの幅をチェックする min-device-width
メディアクエリを使用することができます。その時には、ブラウザ・ウインドウの大きさを変更しても、画像は変更されません:
/* For devices smaller than 400px: */
body {
background-image:
url('img_smallflower.jpg');
}
/*
For devices 400px and larger: */
@media only screen and (min-device-width: 400px)
{
body {
background-image: url('img_flowers.jpg');
}
}
Try it Yourself ❯
HTML5 には、複数の画像を定義することができる <picture>
要素が導入されました。
Element | |||||
---|---|---|---|---|---|
<picture> | 未サポート | 38.0 | 38.0 | 未サポート | 25.0 |
<picture>
要素は、<video>
や <audio>
要素と同様に動作します。
異なるソースを設定すると、適合する最初のソースが優先的に使用されます:
<picture>
<source srcset="img_smallflower.jpg" media="(max-width:
400px)">
<source srcset="img_flowers.jpg">
<img
src="img_flowers.jpg" alt="Flowers">
</picture>
Try it Yourself ❯
srcset
属性は必須で、画像のソースを定義します。
media
属性は任意で、CSS @media ルール の中から検索した
メディアクエリを受取ります。
<picture>
要素をサポートしていないブラウザのために、<img>
要素も
定義する必要があります。