【パララックス・iOS】background-attachment: fixedがスマホで効かない!?原因と解決法を解説
こんにちは~Taku(@takumuda_1093)です。
ここ数年で定着したパララックス効果のあるWebデザイン。
ですが、一部スマートフォンで閲覧した時に表示が崩れてしまう問題があるようです。
先に結論を書くと「background-attachment: fixed」は使わない方が良いです。
自分もパララックス対応のコーディングをしていたときに、スマホ対応にかなり苦戦したので、解決法を皆さんに紹介します。
あまりプログラムやコーディングに詳しくない人でも分かりやすいように解説していきますので、最後までお付き合いくださいね。
1.パララックスとは
まず、パララックスとはなにかおさらいしていきましょう。
パララックスとは「視差効果」のことを指します。
要素同士の動きに差を加えることによって、立体感やエフェクトを表現する効果のことです。
主に、背景画像を固定して、文字などの要素だけがスクロールで動くようにする使われ方が多いです。
要素をレイヤー分けしたようなデザインにするだけで、かなりオシャレなデザインになるよ!
2.iPhoneで見ると表示が崩れる!?
筆者はこのブログ以外にも、自身のイラストを載せるサイト▶を運営しています。
このイラストサイトのデザインをリニューアルする際に、パララックスを取り入れてコーディングをしました。
※追記:2022年5月12日
現在サイトのデザインが大きく変わっていますが、
同様のパララックス技術を使用しているので安心して読み進めて下さい!
一通りコーディングを終えて、いざ最終チェック。
PC版の表示は問題なく、スマホ(Android)の表示も問題なし。
▼Androidで見たサイト
最後はiPhone(iOS)での表示確認だけですが「なんの問題もないだろう」と軽い気持ちでチェックしてみると…
▼iPhoneで見たサイト
キャラクターの顔は愚か、アホ毛の先端だけが高倍率表示されているいう悲惨な状態に…。
キャッシュ(サイトの情報を保存する機能)の影響でバグってるだけかと思い、何度かリロードしてみるも変化なし。
原因が分からず調べてみると、とあるcssとiOSの関係に問題があることが分かってきました。
①原因は「background-attachment: fixed」だった
元々は以下のコードで記述をしていました。
(以下のコードは良くない記述なので間違えてコピペしないように!!)
See the Pen
iOS非対応のパララックス by Taku@絵描き兼ブロガー(多分) (@takumuda_1093)
on CodePen.
間違った記述はしていないし、iPhone以外の端末なら問題なく表示されている。
なぜ、iPhoneだけがうまく表示されないのか小難しいサイトを色々探っていくと、以下のcssが悪さをしていることが分かりました↓↓
background-attachment: fixed;
background-size: cover;
②iOS端末では「background-attachment: fixed」は効かないらしい
「background-attachment
」は、スクロールする時に背景画像を固定したままにするか、
スクロールに合わせて移動させるかどうかを指定するためのれっきとしたcssプロパティです。
なので、このプロパティが間違った記述というわけではありません。
ですが、この「background-attachment」と一緒に「background-size: cover」というプロパティを一緒に記述すると、iPhone端末でバグが発生してしまいます。
これは公式でも確認されているiOSの不具合らしいです。
iOSのせいでバグってるのに、background-attachmenのせいにされて使われない…
あぁぁ…かわいそうに…
(その「分かる人にはわかる」みたいなネタやめろよ)
③妥協しないでしっかりiOS対応させよう
「不具合ならしょうがないし妥協するかー。」なんて思っているそこのあなた!!
その考えは捨てて今すぐに対応させましょう!!
iPhoneは皆さんもご存知の通り、日本人の半数以上が使用(シェア)しているスマートフォンになります。
言い方を変えると、せっかくこだわってパララックスサイトを制作したのに、多くの人にバグった表示で見られてしまうことになります。
そんなの悲しすぎますよね。
なので、どんな端末でもしっかり綺麗に見ることができるように記述を書き直していきましょう。
これから分かりやすく説明していくね!
3.iOSでもパララックス対応させる記述
それでは、iOS端末でもパララックスを綺麗に表示させる解決法を紹介します。
記述は簡単で「background-attachmen」を使うのではなく、全体の要素に「擬似要素」で背景を表示して固定させるだけです。
擬似要素とは、一部の要素(セレクター)にだけ特定のスタイルを付けることができる指定方法になります。
よく使われるのは、マウスで選択しているときだけ文字や画像の見た目を変える「:hover」などがあります。
今回は擬似要素の「::before」を使用してコーディングしていきます。
See the Pen
iOS対応のパララックス by Taku@絵描き兼ブロガー(多分) (@takumuda_1093)
on CodePen.
実際にどのような記述でiOS対応のパララックスを表現させたのかは以下の通りです。
- ①bodyなど、全体の大元になる要素に「擬似要素(::before)」を記述します。
- ②指定した擬似要素に「background」で背景画像を指定します。
- ③擬似要素全体に「position: fixed;」で固定表示させます。
以上の記述をすることで、無事にiPhoneでも綺麗に見ることのできるパララックスサイトが完成しました。
▼iPhoneで見たサイト
ってことで最後に改めてできあがったパララックスサイト▶を見てくれると嬉しいな!
4.最後に
パララックスを制作する人の多くがぶつかるであろうiOS対応の記述について解説していきました。
もし身の回りで「iPhoneだけパララックスの表示がおかしい!」と頭を抱えている人がいたら、ぜひ教えてあげてください。
早く「background-attachment」と「background-size: cover」を組み合わせてもバグが発生しないように対応してもらいたいものですね。
最後まで読んでいただきありがとうございました!
この記事へコメントする
PROFILE
プロフィール
Taku
創作中心のフリーイラストレーター。
専門学校でWebやグラフィックの技術を2年間学び、
印刷会社のグラフィックデザイナーとして就職。
Web技術のスキルアップを目指して
半年で退職し、Web制作会社でデザイナーとして2年間奮闘。
現在はフリーのイラストレーターとして
日々活動している。
現在イラスト・画像作成のご依頼を募集しております。
ご興味がある方はご依頼募集サイトから詳細をご覧下さい。
コメント一覧
アンドロイド派なのでアイフォンで背景画像が固定されていないことに気づかず、アイフォンユーザーから指摘されて焦っていたのですが、とても丁寧な解説のおかげで無事解決できました!ありがとうございます!
絵のタッチや文章、とても良いブログですね!ついついブログ記事を読み漁ってしまい、イラレの袋文字の記事を見て、さっそく真似させていただきました。
十万石まんじゅうさん
コメントありがとうございます!
無事解決できたとのこと、お役に立ててとても嬉しいです!!
iPhoneでも「background-attachment」が使えるようになって欲しいですね…
他の記事も読んでいただきありがとうございます!
時間をかけてイラストや記事を作った甲斐がありました!
今後ともよろしくお願いします!!
感謝をお伝えしたくてコメント失礼します。
ここ数日いろいろ調べて試して、このブログに辿り着き、やっと背景問題解決しました。
感動です。
大変助かりました!
peroさん
コメントありがとうございます!
背景問題、無事に解決したようでとてもよかったです!!
記事を作成した甲斐がありました!!
綺麗にサイトが表示された時の感動は凄まじいですよね笑
早くiOSにも対応してもらいたいものです…!
今後ともよろしくお願いします!!