Webサイトに表示させた背景画像のサイズや配置を調整する方法はやや複雑です。そのためデザインカンプどおりに背景画像の調整ができず、悩んでしまうかもしれません。
この記事ではCSSプロパティbackground-image
を使用した背景画像の表示方法と、サイズ・配置の調整方法を詳しく紹介しています。最後までお読みいただくとbackground-imageを使いこなせるようになります。
- background-imageの使い方
- Webサイトに背景画像を表示させる方法
- CSSで背景画像のサイズや配置を調整する方法
最短でフリーランスを目指すあなたへフリーランスとして稼ぐためには、ヒアリング力や営業力など幅広いスキルを身につける必要があります。技術を伸ばすのみでは案件が取れない、クライアントさんの要望に応えられない、といった状況に陥るかもしれません。
フリーランス特化型プログラミングスクールZeroPlusならば営業からデザイン、コーディングまで、独立後必要となるスキルを全て身につけられます。
まずはフリーランスを目指すうえでの悩みや疑問を、ZeroPlusの無料相談会でご相談ください。
\お申し込みは30秒で終わります。/
フリーランスについて専門性の高いメンターが、質問にお答えいたします。今後のキャリア形成にぜひお役立てください!
背景画像の表示方法
背景画像を表示させるにはCSSプロパティのbackground-image
を使用します。サンプル画像として高さ1280px × 幅1920pxの画像を用意しました。
containerに背景画像を表示させます。
<div class="container">
</div>
.container {
/*背景画像は高さを持たないため、heightの指定が必要*/
height: 1280px;
/*相対パスで画像ファイルを指定*/
background-image: url(../img/background-image.jpg);
}
上記の例ではcontainerの高さを1280pxに指定しています。背景画像自体は高さを持たないため、表示させる要素自体に高さを持たせる必要があります。もし背景画像が表示されない場合には、要素に高さが指定されているか確認してみましょう。
背景画像の表示には相対パスを使う
背景に指定する画像ファイルの指定には、相対パスを用います。相対パスとは作業中のファイルを起点とし、特定のファイルまでの経路を示したものです。相対パスを記述する際に使用する記号を、表にまとめました。
記号 | 意味 |
/ | 一つ下の階層 |
./ | 同じ階層(記述を省略できます) |
../ | 一つ上の階層 |
../../ | 二つ上の階層 |
紹介した記号を用いて相対パスを記述していきます。
相対パスの書き方は特に理解が難しいポイントです。例としてcodeフォルダ内のstyle.cssファイルから、imgフォルダ内のbackground-image.jpgまでの相対パスの書き方を考えてみましょう。下図をご覧ください。
このケースでは../img/background-image.jpg
と記述します。
style.cssから一階層上に上がるので../
を書き、imgフォルダから一階層下がるのでimg/
と記述します。あとは指定するファイル名background-image.jpg
を記述すれば相対パスは完成です。
まずは相対パスの記述方法をしっかり理解しましょう。
背景画像の調整に用いる主要な3つのプロパティ
背景画像の調整に用いる主要なプロパティは以下の3種類です。
プロパティ | 調整内容 |
background-size | サイズを調整する |
background-position | 表示位置を調整する |
background-repeat | 繰り返し表示を制御する |
これらのプロパティを使って、以下のように記述できます。
.container {
background-image: url(../img/background-image.jpg);
background-repeat: no-repeat;
background-position: bottom;
background-size: contain;
}
まずbackground-image
で背景画像を表示し、3種類のプロパティで調整を行うのが基本です。
ショートハンドで複数のプロパティをまとめて記述する方法
background
プロパティを使えば、複数のプロパティをまとめて記述可能です。このように複数のプロパティをまとめて記述する方法をショートハンドと呼びます。
.container {
background-image: url(../img/background-image.jpg);
background-repeat: no-repeat;
background-position: bottom;
background-size: contain;
}
上記のコードをbackground
を用いて、下記のようにまとめられます。
.container {
background: url( ../img/background-image.jpg) no-repeat bottom / contain;
}
ショートハンドを用いることでコードがシンプルになりました。各値を半角スペースで区切って記述します。
ただしbackground-size
のみ、記述方法に特殊なルールが存在するので押さえておきましょう。background-size
はbackground-position
の後に「スラッシュ(/)」を付与してから、記述することがルールです。上記のコードでもルールにならって、bottom / contain
と記述しています。
次からは背景画像を調整するプロパティについて、詳しく解説していきます。
1.background-size
background-size
を使用すると、背景画像のサイズを調整できます。
指定できる値には下記の種類が存在します。
- auto(初期値)
- contain
- cover
- 値
- %
このうちautoは画像ファイルをそのままのサイズで表示させる方法で、ほとんど使用することはありません。ここではautoを除くそれぞれの値の調整内容について解説します。
contain
contain
を使用すれば画像の縦横比を保ったまま、要素の内側に画像の全領域が収まるサイズへと調整できます。
<div class="container">
</div>
.container {
background-color: #ff914d;
width: 640px;
height: 640px;
background-image: url(../img/background-image.jpg);
background-size: contain;
background-repeat: no-repeat;/*画像が繰り返すのを防ぐ*/
}
画像の縦横比を保ったまま、全領域が表示されるようにサイズ調整されました。contain
の特徴として、表示させる要素と背景画像の縦横比が異なる場合は、図のようにスキマができます。
cover
cover
を指定すると要素がすき間なく埋まるように、縦横比を保ちながら背景画像を表示できます。
.container{
/*height,width,background-colorコード省略*/
background-image:url(../img/background-image.jpg);
background-size:cover;
background-repeat: no-repeat;/*画像が繰り返すのを防ぐ*/
}
要素に対してすき間なく背景画像が表示されました。要素からはみ出した部分はトリミングされています。要素の背景を画像で覆いたい場合にはcover
を使用しましょう。
px・%による指定
background-size
をpx指定する方法と、%指定する方法があります。px指定と%指定においては、いずれも2つまで値を指定できます。
値の指定方法 | 内容 |
background-size: 値1; | 幅と高さへ同じ数値をで一括指定する |
background-size: 値1 値2; | 値1に幅、値2に高さを指定する |
たとえばbackground-size: 600px 300px;
ならば、幅600px、高さ300pxにサイズ指定できます。
px・%指定における注意点は、元の画像の縦横比を守って指定しない限り画像が変形する点です。サンプル画像のサイズは高さ1280px×横1920pxで、縦横比は40:60です。あえて背景画像のサイズを横幅20%、高さ60%に指定してみます。
.container{
/*height,width,background-colorコード省略*/
background-image:url(../img/background-image.jpg);
background-size:20% 60%;/*横幅を20%、高さを60%に指定*/
background-repeat: no-repeat;/*画像が繰り返すのを防ぐ*/
}
画像が縦長に変形してしまいました。とはいえ、縦横比を指定の都度、計算するのは手間がかかりますよね。
この場合に有効な手段として、2つの数値のうち片方をauto
に指定する方法があります。autoを片方の値へ指定すると縦横比が自動計算され、画像の変形を防げます。
.container {
/*height, width, background-colorコード省略*/
background-image: url(../img/background-image.jpg);
background-size: 20% auto;
background-repeat: no-repeat;/*画像が繰り返すのを防ぐ*/
}
このようにauto
を指定した高さが、横幅のサイズに応じて自動で計算されています。px・%指定では、2つの値のうち片方の値をauto
に指定すると、画像の変形を防げるため便利です。
background-sizeまとめ
background-size
に指定できる値について、調整内容を下の表で確認しましょう。
値 | 調整の内容 |
auto(初期値) | 画像本来のサイズのまま表示させる |
contain | 画像の縦横比を保ち、要素内に画像の前領域が収まるようにサイズを変更 |
cover | 画像の縦横比を保ち、要素を覆うようにサイズを変更 |
px | pxで画像サイズを指定 |
% | 要素に対する割合で画像サイズを指定 |
2.background-position
background-position
を使えば、背景画像の表示位置を調整できます。
表示調整を指定する方法の種類は以下の3つです。
- px指定
- %指定
- 位置を示すワードで指定
それぞれの指定方法について解説します。
px指定
background-position
をpx指定する場合、値を2つまで記述できます。要素の左上を起点とし、最初の値で横方向へ、2番目の値で縦方向へ配置位置を調整できます。たとえばbackground-position: 300px 200px;
ならば、要素の左上を起点として横に300px、縦に200px移動した位置に画像が配置されます。
px指定ではデバイスの幅にかかわらず、表示位置は固定されます。そのためレスポンシブ対応が必要なサイトにおいては不向きな方法です。
%指定
%指定する場合も最初の値で横方向へ、二番目の値で縦方向へ配置位置を調整できます。しかし%指定はpx指定と比較して概念がやや複雑です。
端的に説明すると
- 画像の左上を起点に、指定した%分移動した位置
- 要素の左上を起点に、指定した%分移動した位置
以上の2点が重なるポイントに画像が表示されます。
たとえばbackground-position: 50% 50%;
ならば、画像の左上から横50%縦50%へ移動した位置と、要素の左上から横50%縦50%へ移動した位置が重なるポイントに背景画像が表示されます。
%指定の事例をいくつか確認してみましょう。
%指定の概念はpx指定に比べて複雑ですが、レスポンシブ対応にも活用できる便利な手段です。
位置を示すワードで指定
top(上)・bottom(下)・left(左)・right(右)・center(中央)の5つのワードを使い配置を調整できます。それぞれの値を指定したときの、背景画像の表示位置を確認してみましょう。
要素の四つ角に背景画像を指定したい場合はtop・bottom・right・leftのうち2つの値を組み合わせます。
位置を示すワードを2つ指定する場合、その順番を入れ替えても表示結果は同じです。
位置を指定するワードと数値指定を組み合わせて使用できます。
位置を示すワードと数値を合わせて記述する場合、値の順番を入れ替えると指定が効かなくなるので注意が必要です。
right・leftは横方向の配置を指定するワードなので最初の値に記述、top・bottomは縦方向の配置を指定するワードなので2番目の値に記述しましょう。位置を示すワードの指定はブラウザ幅に合わせ表示位置が可変するため、レスポンシブ対応との相性が良く使いやすい面があります。
background-positionまとめbackground-position
に指定できる値には、以下の種類があります。
- 値
- %
- 位置を示すワード
background-position
は、上記の指定方法のなかから最大2つの値を組み合わせて配置を調整できます。
background-position:値1(横方向の配置) 値2(縦方向の配置);
3.background-repeat
background-repeat
を使用して、背景画像の繰り返しを制御することができます。初期値はrepeat
で、要素内を埋めるように同じ画像が繰り返し表示されます。
値にno-repeat
を指定すると、背景画像の繰り返しを禁止できます。repeat-x
は横方向への繰り返し、repeat-y
は縦方向への繰り返しを個別に指定可能です。それぞれの値を指定した場合、背景画像がどのように表示されるか確認しましょう。
background-repeatまとめbackground-repeat
に指定する値と調整内容を表で確認しましょう。
値 | 調整の内容 |
repeat(初期値) | 背景画像を繰り返し表示させる |
no-repeat | 背景画像の繰り返し表示をキャンセルする |
repeat-x | 背景画像を横方向にだけ繰り返し表示させる |
repeat-y | 背景画像を縦方向にだけ繰り返し表示させる |
背景画像を複数表示させる方法
ここでは応用編として背景画像を複数表示する方法について解説します。
手順は2つあります。
background-image
に2つの画像パスを、カンマ区切りで記述- 背景画像を調整するプロパティについても、カンマ区切りで値を記述
実例で確認してみましょう。
.container {
background-color: #ff914d; width: 640px;
height: 230px;
/*1.background-imageに2つの画像パスを、カンマ区切りで記述*/
background-image: url(../img/background-image.jpg),url(../img/simple.jpg);
/2.背景画像を調整するプロパティについても、カンマ区切りで値を記述*/
/*2枚の画像の横幅を、いずれもcontainer幅の半分に指定*/
background-size: 50% auto,50% auto;
/*1枚目の画像を左上、2枚目の画像を右下に配置*/
background-position: left top,right bottom;
/*2枚の画像をいずれも繰り返さないよう指定*/
background-repeat: no-repeat,no-repeat;
}
containerの中に2つの背景画像を表示させることができました。
背景画像を重ねる方法
次に複数の背景画像を重ねる方法について解説します。2枚の背景画像が重なるようにbackground-position
を変更すればよいです。実例を確認してみましょう。
.container {
/*background-color、heightコード省略*/
background-image: url(../img/background-image.jpg), url(../img/simple.jpg);
background-size: 50% auto, 50% auto;
/*background-image.jpgを10%右へ移動*/
background-position: 10% top, bottom right;
background-repeat: no-repeat, no-repeat;
}
上のように左の画像を右へ10%移動させたため、2枚の背景画像が重なりました。
注目していただきたいのは背景画像が重なる際、先に指定した背景画像が優先的に前面に表示される点です。ここでは先に指定していたbackground-image.jpgが前面になるように重なっています。
背景画像を重ねる際は、前面に表示させたい画像を先に記述するようにしましょう。
背景画像の重なりを利用したデザイン事例2枚の画像を重ねて実際に背景画像をデザインしていきます。
.container {
width: 340px;
height: 230px;
background-image: url(../img/walk-man.png), url(../img/simple.jpg);
background-size: 7% auto, contain;
background-repeat: repeat-x, no-repeat;
background-position: 0% 90%;
}
上記のコードをブラウザで確認してみましょう。
男性の画像を先に記述することで、大きなカップの前を行列で歩いているかのようなデザインを作成できました。このように複数の画像を表示する方法をマスターすることで、背景画像に変化をつけることができます。
まとめ
この記事では背景画像を表示させる方法と、サイズや配置を調整する方法について解説しました。背景画像を表示させるには、background-image
に相対パスを指定する必要があります。
また背景画像を調整するプロパティは以下の3種類です。
プロパティ | 調整内容 |
background-size | 背景画像のサイズを調整する |
background-position | 背景画像の表示位置を調整する |
background-repeat | 背景画像の繰り返し表示を制御する |
それぞれのプロパティの詳しい使い方については記事内で解説しています。参考にして背景画像の表示にチャレンジしてみてくださいね!
\ 完全無料のプログラミンスクール /
30日間で学びきれる
プログラミングスクールZeroPlus Gate