【完全保存版】CSSで背景画像を繰り返す方法|repeatが効かない原因と実務での正しい使い分け

【完全保存版】CSSで背景画像を繰り返す方法|repeatが効かない原因と実務での正しい使い分け

2026.02.23

はじめに|background-repeatが「効かない…」それ、仕様です

CSSで背景画像を設定したとき、

  • 画像が勝手に繰り返される
  • repeatを指定したのに繰り返されない
  • 横だけにしたいのに縦にも並ぶ
  • スマホでパターンが崩れる

こんな経験はありませんか?

私も昔、ヒーローセクションに背景を設定して「repeat-xにしたのに全然変わらない…」と悩みました。原因は background-size: cover; でした。

結論から言うと、

background-repeatが効かないように見える原因は、ほぼ「サイズ」か「要素の状態」です。

この記事では、初心者〜実務レベルまでカバーしながら、

  • 背景画像が繰り返される仕組み
  • repeat / repeat-x / repeat-y / 2値指定の違い
  • repeatが効かない本当の理由
  • DevToolsでの確認方法
  • 実務での正しい使い分け

を、現場目線でわかりやすく解説します。


CSSの背景画像はなぜ繰り返されるのか?

まず押さえておきたい基本です。

.box {
  background-image: url("bg.png");
}

この指定だけで、背景画像は縦横に自動で繰り返されます。

理由は単純で、

background-repeat: repeat;

が初期値だからです。

つまり、何も指定しなければ「縦横に敷き詰める」動作になります。


background-repeatの基本4種類【まずはここを整理】

① repeat(初期値)

background-repeat: repeat;

縦横どちらにも繰り返します。

パターン背景・テクスチャでは最も使います。


② no-repeat

background-repeat: no-repeat;

画像を1枚だけ表示します。

ヒーロー画像ではほぼ必須です。


③ repeat-x

background-repeat: repeat-x;

横方向のみ繰り返します。

例:

  • 横ライン装飾
  • 下線風デザイン

④ repeat-y

background-repeat: repeat-y;

縦方向のみ繰り返します。

例:

  • サイド装飾
  • 縦ストライプ

実務で増えている「2値指定」

最近の実務ではこちらをよく使います。

background-repeat: repeat no-repeat;

意味:

  • 横:repeat
  • 縦:no-repeat

repeat-x よりも柔軟で、可読性も高いです。


repeatが効かない原因【ほぼこのどれか】

原因① background-size: cover を使っている

background-size: cover;

coverは「1枚で全体を覆う」指定です。

repeatが無効になるわけではありませんが、
見た目上、繰り返しが発生しません。

これが最も多い誤解です。


原因② 画像自体が大きすぎる

背景画像が要素より大きいと、繰り返しが見えません。

テスト時は小さい画像で確認すると分かりやすいです。


原因③ 要素に高さがない

.box {
  background-image: url("bg.png");
}

高さがなければ背景も表示されません。

.box {
  height: 300px;
}

まず高さを確認してください。


原因④ background-positionで端に寄っている

positionを指定していると、繰り返しが偏って見えることがあります。

background-position: top right;

意図せず端に固定されていないか確認しましょう。


原因⑤ 画像が読み込まれていない

DevTools → Networkタブで404が出ていないか確認します。


【実務最速】DevToolsで一発確認する方法

  1. F12で開く
  2. Elementsで対象要素を選択
  3. Stylesで background を確認
  4. Computedで background-size / repeat を確認

ここで設定が上書きされていないかも確認できます。

特にフレームワーク使用時は、
別CSSに上書きされているケースがよくあります。


backgroundのまとめ書き(shorthand)の落とし穴

.box {
  background: url("bg.png") no-repeat center/cover;
}

shorthandでは、

  • 画像
  • repeat
  • position
  • size

がまとめて指定されます。

repeatを書かないと、意図せずrepeatになることがあります。


シームレス画像を使うと綺麗に繰り返せる

繰り返し前提なら、シームレス素材を使いましょう。

条件:

  • 上下左右が自然につながる
  • 継ぎ目が目立たない

テクスチャ背景では必須です。


backgroundとimgタグの正しい使い分け

backgroundが向いている

  • 装飾
  • パターン
  • テクスチャ

imgが向いている

  • 写真
  • 意味を持つ画像
  • SEO対象画像

装飾はbackground、
意味を持つものはimg。
ここを間違えるとSEO的にも不利です。


スマホ表示で崩れる理由

スマホでは、背景パターンが目立ちすぎることがあります。

@media (max-width: 768px) {
  .box {
    background-repeat: no-repeat;
    background-size: cover;
  }
}

レスポンシブで調整すると自然になります。


チェックリスト|repeatが効かないとき

  • background-size: coverになっていないか
  • 要素に高さがあるか
  • 画像サイズが大きすぎないか
  • shorthandで上書きしていないか
  • DevToolsで最終値を確認したか

まとめ|background-repeatは「サイズ理解」が9割

background-repeatが効かないと感じるとき、原因はほぼ以下です。

  • background-sizeとの関係
  • 要素の高さ不足
  • 画像サイズ
  • shorthand上書き

仕組みを理解すれば、迷うことはありません。

まずは小さな画像で試し、DevToolsで最終適用値を確認してみてください。

それだけで、「repeatが効かない」問題はほぼ解決できます。


関連記事(内部リンク想定)

  • background-sizeの完全理解ガイド
  • CSSのbackgroundプロパティまとめ
  • レスポンシブデザイン基礎
  • CSSでヒーローセクションを作る方法

タグ:

#CSS #HTML #background-repeat #レスポンシブ #初心者向け