| この記事の要点 |
|
background-attachment とは
background-attachment は要素に設定した背景画像が、スクロール時にどのように振る舞うかを指定する CSS プロパティです。値を変えるだけで、普通の背景・固定背景・コンテンツ追従背景の 3 通りを切り替えられます。
基本構文
セレクタ {
background-attachment: scroll | fixed | local;
}
指定できる値
| 値 | 意味 |
|---|---|
scroll(既定) | 要素と一緒に背景もスクロールする。要素内部のスクロールには追従しない |
fixed | ビューポート(画面)に固定。ページをスクロールしても背景は止まったまま見える |
local | 要素内コンテンツのスクロールに合わせて背景も動く(要素自身がスクロールバーを持つときに有効) |
scroll(既定値)の挙動
body {
background-image: url("bg.jpg");
background-attachment: scroll; /* 省略可 */
background-repeat: no-repeat;
background-size: cover;
}
もっとも一般的な指定です。背景画像は要素にくっ付いて、ページをスクロールすると一緒に動きます。
fixed の挙動(パララックス風)
.hero {
background-image: url("hero.jpg");
background-attachment: fixed;
background-position: center;
background-size: cover;
height: 100vh;
}
背景はビューポートに対して固定され、本文だけが上に流れていくため、背景が透けて見える窓のような視覚効果が得られます。JavaScript なしで簡易パララックスが組めるのが魅力です。
local の挙動
要素自身がスクロールバーを持っているとき(overflow: auto; の領域など)に意味を持ちます。
.scroll-box {
width: 400px;
height: 200px;
overflow: auto;
background-image: url("paper.png");
background-attachment: local; /* 中身をスクロールすると背景も動く */
}
| 値 | 外側ページのスクロール | 要素内部のスクロール |
|---|---|---|
scroll | 動く | 動かない |
fixed | 動かない(固定) | 動かない |
local | 動く | 動く |
background ショートハンドでまとめる
.hero {
background: url("hero.jpg") center/cover no-repeat fixed;
}
background ショートハンドでは color / image / position / size / repeat / origin / clip / attachment をまとめて書けます。
スマホ Safari での挙動
iOS Safari や一部の Android ブラウザでは、パフォーマンス上の理由から background-attachment: fixed が事実上無効化され、scroll として描画されることがあります。レスポンシブで意図通りに見せたい場合はメディアクエリで切り替えます。
.hero {
background: url("hero.jpg") center/cover no-repeat;
background-attachment: fixed;
}
@media (hover: none) and (pointer: coarse) {
.hero { background-attachment: scroll; }
}
複数背景での指定
背景画像を複数指定するときは、カンマ区切りで background-attachment も同じ数だけ並べます。
.hero {
background:
url("front.png") center/contain no-repeat scroll,
url("back.jpg") center/cover no-repeat fixed;
}
よくあるハマりどころ
| 症状 | 原因 / 対処 |
|---|---|
fixed が効かない(スマホ) | iOS Safari の仕様。メディアクエリで scroll に倒すか、別 div + position: fixed で再現 |
| 背景が拡大されてしまう | fixed はビューポート基準で background-size: cover が効くため。サイズの想定をビューポートで取り直す |
| 画面サイズで背景の見え方が変わる | fixed 特有。background-position を center 等の相対指定にする |
| 要素内スクロールで背景を動かしたい | local を使う(scroll ではダメ) |
FAQ
Q: パララックスをもっと細かく制御したい
A: CSS だけでは fixed が限界です。複層のスクロール速度をずらしたいなら scroll-driven animations や JS ライブラリ(Lenis 等)を使います。
Q: fixed のときに background-size: cover がおかしい
A: ビューポート基準で計算されるため、画面サイズに合わせて再構成されます。要素サイズ基準にしたいなら scroll に戻すか、別レイヤを切ります。
典型レシピ集
レシピ 1: 固定ヒーロー画像
.hero {
background: url("hero.jpg") center/cover no-repeat fixed;
min-height: 100vh;
color: #fff;
display: grid;
place-items: center;
}
レシピ 2: 半透明オーバーレイ + 固定背景
.hero {
background:
linear-gradient(rgba(0,0,0,.5), rgba(0,0,0,.5)),
url("hero.jpg") center/cover no-repeat fixed;
}
レシピ 3: スクロール可能カード内の和紙風背景
.note {
width: 100%;
max-width: 500px;
height: 240px;
overflow: auto;
background: url("paper-texture.png") repeat;
background-attachment: local;
padding: 1em;
line-height: 1.8;
}
パフォーマンスへの影響
fixed はスクロールごとに再描画されるため、大きな画像や複数レイヤを fixed にするとスクロールがカクつくことがあります。特にモバイルでは will-change: transform を付けた別レイヤで擬似的に固定する方が滑らかになるケースもあります。プロダクションで使う前にスクロール FPS を DevTools で確認するのがおすすめです。
関連
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスのソフト一覧|Blender・Metasequoiaと用途別の選び方
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Oracle 19cの索引再構築|REBUILDの判断・ONLINEと制約 2026-10-26 18:52:58
- Oracle 19cのCREATE INDEX|UNIQUE・BITMAP・TABLESPACE・ONLINEと製品比較 2026-10-26 18:52:56
- Oracle 19cの列定義変更|MODIFYの型・属性保持と既存NULL 2026-10-26 18:15:03
- Oracle 19cの列追加|ADD・DEFAULTと既存行・NOT NULLの条件 2026-10-26 18:15:03
- Oracle 19cのCREATE TABLE|型・制約・外部キーとCTASの注意点 2026-10-26 18:15:00
- Oracle 19cのDROP INDEX|制約依存・ONLINEとINVISIBLE 2026-10-26 17:21:20
- Oracle 19cのDROP TABLE|CASCADE・PURGEと復旧条件 2026-10-26 17:21:20
- Oracle 19cのカラム削除|DROP COLUMN・SET UNUSEDと依存・取消条件 2026-10-26 17:21:19
- Oracle 19cの索引操作|作成・再構築・削除と製品別の比較 2026-10-26 16:39:47
- Oracle 19cの表DDL|表操作の選び方とCREATE・ALTER・DROP・TRUNCATE 2026-10-26 16:39:47
- TRUNCATE TABLEの注意点|空の子表でも残る外部キーと製品別の取消条件 2026-10-26 16:39:45
- Oracle 19cのSAVEPOINT|部分ロールバック・COMMIT・DDLの境界 2026-10-26 15:51:40
- Oracle 19cのUPDATE文|更新件数・NULL・相関サブクエリ・MERGE 2026-10-26 15:51:40
- Oracle 19cのHAVING句|WHEREとの違い・NULL・集計条件 2026-10-26 15:51:40
- Oracleの制約|NOT NULL・UNIQUE・主キー・外部キー・CHECK 2026-10-26 15:51:38