こんな方に読んでほしい
まずはデモサイトをご用意しました。
実際の動きを、こちらで1度ご確認ください。
[記事の内容]

パララックスとは、日本語で「視差」という意味です。
Webサイトを閲覧する際に、背景画像が固定されたまま、コンテンツだけがスクロールで流れてくる動きを見たことはありませんか?
今回は、その動きをCSSで実装します。
最初は、背景画像の間にコンテンツを挟む、基本的なパターンです。
完成イメージは以下のようになります。
まずは、HTMLの書き方は以下のようになります。
<!--固定背景01-->
<div class="cd-fixed-bg cd-bg-1">固定背景01</div>
<!--コンテンツ-->
<div class="area">
<p>【CSS】でスクロール時に背景画像が切り替わるパララックス</p>
<h2>SHU BLOG</h2>
</div>
<!--固定背景01-->
<div class="cd-fixed-bg cd-bg-1">固定背景01</div>
cd-fixed-bgが共通の設定、cd-bg-1が1枚目の画像の設定です。次に、CSSの書き方は以下のようになります。
/*--画面全体の設定--*/
body,
html {
height: 100%;
margin: 0 auto;
}
/*--コンテンツ設定--*/
.area {
background-color: #ffffff;
overflow: hidden;
width: 100%;
padding: 5% 0;
}
/*--固定背景の設定--*/
.cd-fixed-bg {
position: relative;
min-height: 100%;
background-size: cover;
background-attachment: fixed;
background-repeat: no-repeat;
background-position: center center;
z-index: 2;
}
/*--固定背景01--*/
.cd-fixed-bg.cd-bg-1 {
background-image: url('画像パス');
}
height: 100%;を指定し、背景要素が画面の高さいっぱいに表示されるようにします。画像パスの部分は、ご自身の画像に変更してください。スクロールすると、背景画像は動かないまま、下に配置された.areaが上に流れてきます。
その結果、背景画像がコンテンツ越しに見えたり、隠れたりするパララックスの動きになります。
次は、コンテンツを先頭に配置し、背景画像を2枚に増やしたパターンです。
完成イメージは以下のようになります。
まずは、HTMLの書き方は以下のようになります。
<!--コンテンツ01-->
<div class="area">
<p>【CSS】でスクロール時に背景画像が切り替わるパララックス</p>
<h2>SHU BLOG</h2>
</div>
<!--固定背景01-->
<div class="cd-fixed-bg cd-bg-1">固定背景1</div>
<!--コンテンツ02-->
<div class="area">
<p>【CSS】でスクロール時に背景画像が切り替わるパララックス</p>
<h2>background02</h2>
</div>
<!--固定背景02-->
<div class="cd-fixed-bg cd-bg-2">固定背景2</div>
areaを先頭にして、その下にcd-bg-1を配置します。cd-bg-2を指定し、2枚目の背景画像を表示します。次に、CSSの書き方は以下のようになります。
共通の設定は、サンプル1と同じです。
/*--一部省略--*/
/*--固定背景の設定--*/
.cd-fixed-bg {
position: relative;
min-height: 100%;
background-size: cover;
background-attachment: fixed;
background-repeat: no-repeat;
background-position: center center;
z-index: 2;
}
/*--固定背景01--*/
.cd-fixed-bg.cd-bg-1 {
background-image: url('画像パス');
}
/*--固定背景02--*/
.cd-fixed-bg.cd-bg-2 {
background-image: url('画像パス');
}
最後は、背景画像を4枚連続で配置し、それぞれにタイトルを表示するパターンです。
完成イメージは以下のようになります。
まずは、HTMLの書き方は以下のようになります。
<!--固定背景01-->
<div class="cd-fixed-bg cd-bg-1">
<h2>TITLE01</h2>
</div>
<!--固定背景02-->
<div class="cd-fixed-bg cd-bg-2">
<h2>TITLE02</h2>
</div>
<!--固定背景03-->
<div class="cd-fixed-bg cd-bg-3">
<h2>TITLE03</h2>
</div>
<!--固定背景04-->
<div class="cd-fixed-bg cd-bg-4">
<h2>TITLE04</h2>
</div>
cd-fixed-bgを4つ並べることで、スクロールするたびに背景画像が切り替わります。次に、CSSの書き方は以下のようになります。
/*--一部省略--*/
/*--固定背景の設定--*/
.cd-fixed-bg {
position: relative;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
min-height: 100%;
height: 100%;
padding: 5%;
color: #fff;
background-size: cover;
background-attachment: fixed;
background-repeat: no-repeat;
background-position: center center;
z-index: 2;
}
.cd-fixed-bg h2 {
font-family: 'Impact', sans-serif;
font-size: 55px;
text-align: center;
}
/*--固定背景01--*/
.cd-fixed-bg.cd-bg-1 {
background-image: url('画像パス');
}
/*--固定背景02--*/
.cd-fixed-bg.cd-bg-2 {
background-image: url('画像パス');
}
/*--固定背景03--*/
.cd-fixed-bg.cd-bg-3 {
background-image: url('画像パス');
}
/*--固定背景04--*/
.cd-fixed-bg.cd-bg-4 {
background-image: url('画像パス');
}
align-itemsとjustify-contentを組み合わせて、タイトルを背景の中央に配置します。元のコードでは、すべてのdivに対して設定していました。
ページ内の他のdivに影響しないよう、今回は.cd-fixed-bgに限定しています。

上記の画像のとおり、iPhone(iOS)ではbackground-attachment: fixed;が正しく動作しません。
背景の固定ができないため、今回はスマートフォンの画面幅になった際に、CSSとjQueryで対応します。
まずはCSSで、スマートフォンのときだけ背景の固定を解除します。
書き方は以下のようになります。
@media screen and (max-width: 736px) {
.cd-fixed-bg {
background-size: cover;
background-attachment: scroll;
}
}
fixedからscrollに切り替え、通常のスクロールをする背景にします。背景の固定を解除するだけでは、パララックスの動きがなくなってしまいます。
そこで、jQueryでスクロール量に合わせて背景位置をずらし、擬似的にパララックスを再現します。
書き方は以下のようになります。
$(function () {
const $target = $('.cd-fixed-bg');
function parallaxBkImg() {
const winTop = $(window).scrollTop();
const winWidth = $(window).width();
if (winWidth <= 736) {
$target.each(function () {
const offsetTop = $(this).offset().top;
const position = winTop - offsetTop;
if (winTop > offsetTop - 800) {
$(this).css('background-position-y', position * 0.4);
}
});
} else {
$target.css('background-position-y', '');
}
}
$(window).on('load scroll resize', parallaxBkImg);
});
$('.cd-fixed-bg')で、パララックスを適用する背景要素をすべて取得します。$(window).width()で画面幅を取得し、736px以下の場合だけ処理を実行します。CSSのブレイクポイントと同じ値にします。0.4を掛けて、背景位置のずらし幅を求めます。数値が小さいほど、背景の動きはゆっくりになります。background-position-yを更新します。background-position-yの指定を解除し、CSSの設定に戻します。parallaxBkImgを実行します。この処理を使うには、jQuery本体の読み込みが必要です。
bodyの終了タグ直前などで、jQueryを読み込んでから記述してください。
今回はこれで以上です。
今回は、CSSでスクロール時に背景画像が切り替わるパララックスを実装する方法を紹介しました。
background-attachment: fixed;を指定するだけで、背景を固定してパララックスを再現できます。
ただし、iPhone(iOS)では動作しないため、メディアクエリとjQueryで対応するようにしましょう。
ぜひ、ご自身のサイトにも取り入れてみてください。
background-attachment: fixed;で、背景画像が固定されスクロールしなくなります。background-size: cover;で、画面いっぱいに画像を表示します。fixedが正しく動作しません。background-attachment: scroll;に変更します。2026.10.21
2026.10.20
2026.10.19
2026.10.15
2026.10.14
2026.10.13
2026.10.10
2026.08.14
2026.08.12
2026.04.05

© 2026 shu-naka-blog