CSSとJavaScriptで実現するパララックス効果【モバイル対応】
パララックス効果は、スクロールに応じて背景画像が異なる速度で移動する視覚効果です。
視差効果とも呼ばれ、ウェブサイトに動きと奥行きを加える手法として人気があります。
この記事では、CSSだけで実現するシンプルな方法と、
JavaScriptを使ってモバイル対応も可能にする方法について解説します。
CSSのみでの基本的なパララックス効果
CSSだけで簡易的なパララックス効果を実現するには、background-attachment: fixed;
プロパティが効果的です。
これにより、背景画像がスクロールに対して固定され、
コンテンツが動くときに奥行きのある視差効果が生まれます。
サンプルコード
#menu {
background-image: url(../image/menubk.png);
background-position: center;
background-size: cover;
background-attachment: fixed; /* 背景を固定 */
width: 100%;
height: 100vh; /* 高さを全画面に設定 */
}
ポイント
background-attachment: fixed;
は背景を固定し、
スクロールに応じてコンテンツが上下に動くようにします。background-size: cover;
で背景画像が全面に表示され、画面幅に合わせて調整されます。
注意点
この方法はPCでは問題なく機能しますが、スマホの実機ではサポートされていないことが多いため、
次の解決策を検討します。
JavaScriptを使ってスマホ対応も可能なパララックス効果
CSSのみではスマホ対応が難しいため、JavaScriptでパララックス効果を制御します。
スクロールに応じて背景のbackgroundPositionY
を調整することで、
スクロール速度に応じた視差効果が得られます。
サンプルコード
<div id="menu"></div>
<style>
#menu {
background-image: url(../image/menubk.png);
background-position: center;
background-size: cover;
width: 100%;
height: 100vh;
position: relative;
}
</style>
<script>
window.addEventListener("scroll", function() {
const menu = document.getElementById("menu");
const offset = window.pageYOffset;
menu.style.backgroundPositionY = offset * 0.5 + "px"; // スクロールに応じて背景位置を変化
});
</script>
ポイント
offset * 0.5
はパララックスの動きの速さを調整しています。
数値を小さくすると動きが緩やかになり、大きくすると速くなります。- JavaScriptを使うことで、モバイルでも同じようにパララックス効果が発揮されます。
モバイルでのパララックス効果の無効化
JavaScriptによるパララックスをモバイルで使いたくない場合や、
パフォーマンスが気になる場合は、メディアクエリを使用してモバイル表示を別に設定します。
たとえば、モバイルのみにスクロール用のbackground-attachment
を解除する設定を行います。
サンプルコード
@media (max-width: 768px) {
#menu {
background-attachment: scroll; /* モバイルでは固定を解除 */
}
}
この方法でモバイルでは背景固定が解除され、パララックスが動作しないようになります。
背景画像が正常に表示されるようになり、スマホでもパフォーマンスが向上します。
4. パララックス効果のまとめ
パララックス効果をCSSとJavaScriptで簡単に実装する方法について紹介しました。
CSSのみの方法はシンプルですが、スマホ対応や動きの自由度を求める場合は
JavaScriptの活用が効果的です。パフォーマンスやユーザー体験を考慮し、
モバイルでの表示を最適化することも大切です。
まとめポイント
- CSSだけで背景固定によるパララックス効果が可能。
- JavaScriptを使えば、スマホでも柔軟なパララックス効果を実現可能。
- モバイル用の設定で効果を解除し、パフォーマンスの最適化も検討。
パララックス効果を活用して、奥行きと動きのあるデザインをぜひ試してみてください!
JavaScriptの基本!Objectと主要メソッドの詳細解説
12月 10, 2024JavaScriptを勉強する上で覚えておきたいオブジェクト一覧と詳細
12月 8, 2024フォームの入力バリデーション:空白や全角スペースの無効化方法
12月 6, 2024