当サイトはアフィリエイト広告を利用しています。

【css】background-imageとbackground-repeatの使い方

【背景画像の使い方と表示ルール ①】background-imageとbackground-repeat

この記事では、以下2つの使い方を紹介します。

  • background-image
  • background-repeat

背景に画像を指定し、繰り返し表示するかまでできるようになりましょう。

html/css初心者の人はご覧ください。

※<img>で画像表示させるやり方を知りたい方は、こちらをどうぞ
【imgの使い方と表示ルール①】画像サイズの決まり方|css指定の「なし・あり」
【imgの使い方と表示ルール②】object-fitとobject-positionの使い方

背景画像の指定手順

背景画像の指定でおもに使うのがこちらの4つ。

  • background-image
  • background-repeat
  • background-size
  • background-position

そして、指定は以下の手順でやりましょう。

そうすれば、思ったように背景画像を表示できます。

レスポンシブも可能です。

  1. 背景に使う画像を指定し、表示する(background-image)
  2. 要素エリアよりも画像が小さい場合、画像を繰り返し表示させるか決める(background-repeat)
  3. 画像の大きさを調整する(background-size)
  4. 要素エリアの中で、画像をどの位置に表示させるか指定する(background-position)

(※2と3は、順番が前後する場合あり)

【参考記事】css指定の書き方|指定の型を身につける

今回は画像を表示し、それを繰り返すかまでやります。

まずは、画像の表示から。

background-image

  1. 背景に使う画像を指定し、表示する(background-image)
  2. 要素エリアよりも画像が小さい場合、画像を繰り返し表示させるか決める(background-repeat)
  3. 画像の大きさを調整する(background-size)
  4. 要素エリアの中で、画像をどの位置に表示させるか指定する(background-position)

背景に画像を指定するのがbackground-imageです。

こちらの指定方法を見ていきましょう。

指定方法

こちらが、background-imageの指定の書き方です。

header {
  background-image: url(images/photo.jpg);
}

※スマホの方は、横にスクロールしてください。

background-image: のあとにurl( )と続きます。

urlは、サイトのアドレスって言う時の「URL」ですね。

「url」と「 ( 」の間には、スペースを入れないようにしましょう。

× url (images/photo.jp)

ここだけは半角スペースでも指定が効かず、画像が表示されなくなるので。

【参考記事】画像表示がうまくいかない⑤:背景画像が表示されない|要素の高さに注目

相対パスは、cssファイルから見た画像ファイルまでの道のりを書く

( )の中には使用する画像ファイルまでのパスが入ります。

※パス = ファイルまでの道すじ、道のり

パスには絶対・相対がありますが、勉強中の人は相対パスで書いてるはずです。

ですので、ここでは相対パスで書きました。

相対パスは、cssファイルから見た画像ファイルまでの道すじ。

ここ、だいじなとこです。

htmlファイルからの道のりではないので気をつけてくださいね。

下の図は、top.cssから見たphoto.jpgまでの道すじ。

ファイルパス

url(images/photo.jpg)の意味は、

「imagesフォルダの中にあるphoto.jpgファイル」

となります。

imagesフォルダを通らないと画像ファイルにはたどり着けません。

なので、道すじとして「images」フォルダを書くのがポイントです。

【参考記事】絶対パスと相対パス|違いと書き方

背景画像が表示されないケース

背景画像の表示のされ方

今度は背景に画像を指定したら、どう表示されるかを見ていきす。

というのも、背景画像は条件により表示されないこともあるので。

ここは必ず表示される<img>画像との大きな違いです。

以下で図を使って説明します。

ちなみに使う画像はこちら。

背景画像
幅:400px 高さ:200px(縦横比 2:1)

読み進めやすいよう、幅・高さを頭に入れましょう。

「幅は400pxで、高さは200px、縦横比は2:1…」と。

記憶できましたね。

画像が表示されない場合

背景画像が表示されないケースです。

<header>

</header>
<!-- headerの中身なし -->
header {
  background-image: url(images/harbor.png);
}
空の<header>にbackground-imageを指定すると、画像が表示されず

ご覧のとおり、画像が表示されません。

背景画像が映し出されないのは、ヘッダーの中身が空だからです。

これは<div>や<p>に背景画像を指定した時でも結果は同じ。

このように要素の中身がなにもない場合、背景画像は表示されません。

要素というのは<div>や<p>のこと。もちろん<header>も。

補足

要素の中身がないと背景画像は表示されません。

しかし、<body>に背景画像を指定した場合は例外のようです。

中身が空でも以下のような結果となります。

<body>

</body>
body{
  background-image: url(images/harbor.png);
}
<body>にbackground-imageを指定

Google ChromeでもSafariでも、画像が画面いっぱいに表示されました。

しかし、<body>が空になるケースはほぼありません。

なんか蛇足でした。

画像が一部表示される場合

次は背景画像が一部表示される場合です。

<header>の中に<h1>を入れます。

  • 親:<header>
  • 子:<h1>
<header>
  <h1>サイトタイトル</h1>
</header>
header {
  background-image: url(images/harbor.png);
}

画面の横幅いっぱいに画像は表示されました。

しかし、高さは16pxしかありません。

16pxは<h1>の文字の大きさです。

この結果から分かるのは、ヘッダーの高さを指定していない場合。

ヘッダーの中身(h1の文字)の高さしか背景として表示されないということ。

つまり、『ヘッダーの高さ = 子要素の高さ』になります。

【参考記事】「シンプルなヘッダーから作り方のコツを学ぼうの」の『ヘッダー』項目
※クリックすると、該当箇所にジャンプします。

画像が全部表示される場合

もし、画像の下まで表示させるなら要素に高さを指定しましょう。

要素に高さを指定すると、子要素の高さに左右されず画像が表示されるので。

<header>
  <h1>サイトタイトル</h1>
</header>
header {
  height: 200px;
  background-image: url(images/harbor.png);
}
<header>エリア
画像 幅:400px 高さ:200pxで表示

ヘッダーに高さを指定したので、画像が下まで表示できました。

次は、繰り返し表示させる指定にいきましょう。

※背景画像が表示されない場合、こちらも参考にしてください。
【参考記事】背景画像が表示うまくいかない⑤:背景画像が表示されない

  • <header>や<div>に背景画像を指定する場合、中身が空なら画像が表示されない。
  • <header>の中に<h1>などを入れても、<h1>の高さ分しか画像が表示されない。横幅はいっぱいに表示される。
  • <header>などが空でも高さを指定すれば、背景画像は表示される。

background-repeat

  1. 背景に使う画像を指定し、表示する(background-image)
  2. 要素エリアよりも画像が小さい場合、画像を繰り返し表示させるか決める(background-repeat)
  3. 画像の大きさを調整する(background-size)
  4. 要素エリアの中で、画像をどの位置に表示させるか指定する(background-position)

背景画像を表示できたあと、次に考えるのが画像を繰り返して表示するかです。

※背景画像を繰り返し表示させるつもりだった。だけど1枚の大きな画像として映し出されたら、もとのサイズが大きいかもしれません。その場合は、画像の大きさを調整しましょう。順番が前後しますが、先に【背景画像の使い方と表示ルール②】background-sizeをご覧ください。

上のさいごに見た図では、画像は繰り返し表示されていました。

これです。

<header>エリア
画像 幅:400px 高さ:200pxで表示

この背景画像を繰り返して表示させるのが、background-repeatです。

指定方法と値

background-repeatの値はこちら。

repeat画像を縦横に繰り返して表示(初期値)
no-repeat画像を繰り返して表示しない
roundさいごの画像が切れずに表示される
(画像サイズは自動で調整)
space画像と画像の間にスペースが入りつつ、さいごの画像も切れない

※初期値=指定されていない時に、はじめに与えられている値

【参考記事】cssの初期値の使い所を理解する

それでは、値ごとに結果を見ていきましょう。

ヘッダーの中身は空で、幅は1000px 高さ500pxに指定。

画像の大きさは、幅:400px 高さ:200pxでした。

repeat

初期値はrepeatです。

なのでbackground-repeatを指定しないと、画像は繰り返し表示されます。

<header>

</header>
header{
  width: 1000px;
  height: 500px;
  background-image: url(images/harbor.png);
}
background-repeat: repeat
background-repeat: repeat

no-repeat

繰り返し表示しない場合は、background-repeat: no-repeatと指定。

ご覧のように画像が1枚しか表示されません。

header{
  width: 1000px;
  height: 500px;
  background-image: url(images/harbor.png);
  background-repeat: no-repeat;
}
background-repeat: no-repeat
background-repeat: no-repeat

【参考記事】画像表示がうまくいかない⑥:背景画像が繰り返されてしまう

さいごの画像を切れずに表示させる

値がrepeatだと、さいごの画像が横も縦も切れて表示されていました。

background-repeat: repeat
background-repeat: repeat

このさいごの画像が切れずに表示させるのがroundです。

round

roundだとさいごの画像も全体が表示されます。

見た目として、roundがきれいですね。

background-repeat: round
background-repeat: round

画像と画像の間にスペースを作る

繰り返し表示させた画像と画像の間にスペースを入れることもできます。

その値がspaceです。

space

spaceだと空白が入りつつ、さいごの画像が切れずに表示されていますね。

正直、こういう画像ではスペースを空けると変ですが…

background-repeat: space
background-repeat: space

アイコン画像っぽいのに、スペースを入れるといい感じになります。

こんなふうに。

なんか、うるさい画像ですみません。

background-repeat: repeat
background-repeat: repeat
background-repeat: space
background-repeat: space

横または縦だけ、繰り返し表示させる

繰り返し表示には、横だけ繰り返すbackground-repeat: repeat-x

縦だとbackground-repeat: repeat-yがあります。

repeat-x、repeat-y

repeat-xrepeat-yを指定すると、横・縦方向にそれぞれ繰り返し表示。

ただし、さいごの画像は切れています。

background-repeat: repeat-x
background-repeat: repeat-x
background-repeat: repeat-y
background-repeat: repeat-y

横だけまたは縦だけ繰り返した、さいごの画像を切れずに表示させる

横だけまたは縦だけ繰り返したさいごの画像。

この画像を切れずに表示させたい場合は次のを使います。

  • background-repeat-x
  • background-repeat-y

これは、background-repeatとは別のものです。

ややこしいですが。

background-repeat-x・background-repeat-y

以下は横だけ繰り返し、さいごの画像が切れないようにする指定です。

header{
  width: 1000px;
  height: 500px;
  background-image: url(images/harbor.png);
  background-repeat: round;
  background-repeat-y: no-repeat;
}

横だけ繰り返した画像のさいごが切れずに表示できています。

指定の流れはこちら。

  1. background-repeat: roundで、さいごの画像を切れないように指定
  2. background-repeat-y: no-repeatで、縦の繰り返しをしないよう指定

指定の順番が逆にならないように気をつけましょう。

ちょっと応用的な感じで…

さらに先ほどのアイコン画像を使い、こんなふうにもできます。

header{
  width: 1000px;
  height: 500px;
  background-image: url(images/worker.png),url(images/worker.png);
  background-size: 150px auto;
  background-repeat: repeat-y,repeat-y;
  background-position: 0% 0%,100% 0%;
}
画像を縦に繰り返す指定。

background-positionとかも解説してないのに、先走ってすみません。

これは画像を複数指定し、それを画面の両端に置き縦に繰り返しています。

こういうのもできるんだくらいに思ってもらえれば…

【参考記事】画像を使いこなす⑥:背景画像を重ねて表示する

背景画像と背景色の関係

こんな長い記事を読んで、さらに次の疑問を持った方もいるかもしれません。

「背景画像と背景色はいっしょに指定してもいいの?」

指定は同時にできます。

以下では背景画像を表示しつつ、背景色としてうすいグレーも合わせて指定。

<header>

</header>
header{
  width: 1000px;
  height: 600px;
  background-color: #e5e5e5; /* うすいグレー */
  background-image: url(images/harbor.png);
  background-repeat: no-repeat;
}
background-imageとbackground-colorを同時に指定

背景画像の下に背景色がついています。

ちなみに下のように書いても結果は同じです。

header{
  width: 1000px;
  height: 600px;
  background-image: url(images/harbor.png);
  background-repeat: no-repeat;
  background-color: #e5e5e5; /* うすいグレー */
}

background-imageのあとにbackground-colorと指定しました。

何となく、あとから書いたbackground-colorで上書きされそうな感じですが。

一応、頭に入れておきましょう。

参考サイト

この記事はCSS3をもとに書きました。

CSS3とはcssのルールブックみたいなもので、その最新版です。

どれも翻訳ありです。

やや専門的に書かれてるので、余裕のある方だけご覧ください。

まとめ

今回はbackground-imagebackground-repeatについて解説しました。

  1. 背景に使う画像を指定し、表示する(background-image)
  2. 要素エリアよりも画像が小さい場合、画像を繰り返し表示させるか決める(background-repeat)
  3. 画像の大きさを調整する(background-size)
  4. 要素エリアの中で、画像をどの位置に表示させるか指定する(background-position)

背景画像を表示させるポイントは、要素への高さの指定でした。

この点に注意して、さっそく背景に画像を指定してみてください。

次は、背景画像の大きさを決めましょう。

背景画像は、大きさによって見た目が変わります。

1枚の大きな画像として映し出すのか。

または、小さなアイコンとして繰り返し表示させるのか。

このように見せ方を決めるのが、background-sizeです。

記事はこちらからご覧ください。

background-positionをご覧になりたい方はこちらをどうぞ。
【背景画像の使い方と表示ルール③】background-positionの使い方

タイトルとURLをコピーしました