cssで複数背景画像指定のうち、特定の画像だけサイズを大きくする

CSSで一つのタグに複数の背景画像を設定することができます。
以前の記事でも紹介しています。

複数画像をまとめて背景に設定できることで、レスポンシブ対応などに応用ができます。
ところが、今回このようなケースがありました。

複数画像を背景設定し、その中の1枚だけサイズを変更する。

レスポンシブで、スマホ表示の際に特定画像だけサイズを調整する必要がありました。
背景画像サイズは、背景画像指定とは別物です。
はたして特定の背景画像だけサイズを変えることなんてできるのか?

調べて対応できましたので、備忘録として記録いたします。

今回やりたいこと

複数指定している背景画像のうち、1枚だけサイズを大きくします。

こちらのサンプルは、複数画像を背景に設定したサンプルです。

実際にできたものがこちら

実際に1つの背景画像だけ大きくすることができた例がこちらです。

複数同時設定した背景画像のうち、一つだけサイズを変更することができました。

具体的な設定方法

複数同時指定した背景画像のうち、1つだけをどうやって大きくしているのでしょうか?
そのやり方を以下に記載します。

設定前のソース

画像を大きくする前のソースはこちらです。
画像を複数背景に設定しています。

<!doctype html><html><head><metacharset="shift_jis"><title></title><metaname="viewport"content="width=device-width, initial-scale=1"><styletype="text/css">.box 
{
	background: 
	url(01.gif)  no-repeat  left  top,
	url(02.gif)  no-repeat  right  top,
	url(03.gif)  no-repeat  left  bottom,
	url(04.gif)  no-repeat  right  bottom;
	height: 90vh;
	width: 90vw;
	margin-right: auto;
	margin-left: auto;
}
</style></head><body><divclass="box"></div></body></html>Code language:HTML, XML(xml)

画像を1枚だけサイズを大きくしたソース

上記のソースに対し、画像1枚だけ大きくしたソースがこちらです。

<!doctype html><html><head><metacharset="shift_jis"><title></title><metaname="viewport"content="width=device-width, initial-scale=1"><styletype="text/css">.box 
{
	background: 
	url(01.gif)  no-repeat  left  top,
	url(02.gif)  no-repeat  right  top,
	url(03.gif)  no-repeat  left  bottom,
	url(04.gif)  no-repeat  right  bottom;
	height: 90vh;
	width: 90vw;
	margin-right: auto;
	margin-left: auto;
	background-size: 300px  auto, auto, auto, auto;

}
</style></head><body><divclass="box"></div></body></html>Code language:HTML, XML(xml)

background-size: 300px auto, auto, auto, auto; と、サイズを背景画像の数だけ指定して実現しています。
今回の例だと、背景画像は4つあるので、background-size: を4つ指定しています。

ちなみに、auto 4つと、300px1つで、5つサイズ指定されているんじゃないの?
と思われがちですが、これで4つの画像サイズ指定になります。

なぜならば、300px auto(1個目の画像サイズ指定),auto(2個目の画像サイズ指定),auto(3個目の画像サイズ指定),auto(4個目の画像サイズ指定)という意味だからです。

1個目だけ、横サイズと縦サイズを別々に指定しているだけで、後の3つは縦横まとめてautoという意味なのです。

ここが少しわかりにくかったです。

ちなみに次のような記述方法でもOKでした

上記の記述方法は、なれれば気になりませんが、慣れていないと理屈が分かりにくいです。
ですが以下のような、理屈的にわかりやすい方法もありました。
これだと確かにわかりやすいです。

.box 
{
	background: 
	url(01.gif)  no-repeat  left  top  /  300px  auto,
	url(02.gif)  no-repeat  right  top,
	url(03.gif)  no-repeat  left  bottom,
	url(04.gif)  no-repeat  right  bottom;
	height: 90vh;
	width: 90vw;
	margin-right: auto;
	margin-left: auto;
}
Code language:CSS(css)

background-size:を使用せずに、各画像指定を/で区切ってサイズを指定します。
これならば直感的にどの画像のサイズを指定しているのか、わかりやすいです。

いろんなやり方を駆使して、目的のデザインを構築する

よく売り文句として、「自由にレイアウト」「思い通りのデザインにできる」というものがあります。
ですが実際に試してみると、そうはなりませんでした。
なぜならば、webで本当に思い通りのデザイン作るためには、簡単ではない技術が必須だからです。
レスポンシブのことを考慮しながらだとなおさらです。

webデザイナーやコーダーとは、レスポンシブで変形することを前提にレイアウトを考えなければいけません。
その際に大事なのは、PC版の雰囲気を可能な限り残すことです。

PCで横長のレイアウトがスマホになると縦長になるため、ガラリとレイアウトは変わります。
だけれども、同じサイトである印象を残すことが腕の見せ所といえます。

その際に、背景画像一つとっても、微調整できるようにすることはとても大事なのです。

今回のレポートは以上です。
読んでいただいてありがとうございました。


ホームページに関するお悩み事やご相談事がございましたら私どもまでご連絡ください。 鋭意ご対応申し上げます。
ホームページのご提案もさせていただいております