cssのみで背景パララックスはアイフォン未対応なのでダメ!
兵庫県三田市でホームページ製作をしているゴリラドットです。
アイフォンのcssバグ…、ちょっともうイヤになってきちゃうレベルでひどいんですよね。往年のインターネットエクスプローラー(IE)かな?というくらいヒドい。
売れてるから殿様商売なんだと思いますが、いっそアイフォン廃れてほしい…、というくらいWEBデザインに携わっている人からすると悪評だと思います。
今回のアイフォンのバグは「position:fixed」した要素とそれに重なる「position:absolute」を指定した要素などのz-indexがうまく効かない、というバグです。
ちなみに現時点で出てるアイフォン13だとこのバグは発生せず、アイフォンSEだと発生しました。バグだとわかってるなら過去機種も対応してほしいものです。はぁ…。
バグの詳細
position:fixedした要素を下に回り込ませるために「z-index:-1」を設定する方法(そもそもこの方法自体がアイフォン、というかサファリが「background-attachment:fixed」に対応してないから仕方なくしてる処理なんですが、その先の「position:fixed」にもバグがあるという…エグいですiOS)がよく用いられると思います。
んで例えばこのposition:fixedした要素の上に、ほかの要素を載せたい場合にz-index:-1とか設定してマイナス方向での重ね合わせをコントロールすると思います。
イメージ図
- 「③position:fixed & z-index:-2」君が最背面
- 「②position:absolute & z-index:-1」君が真ん中
- 「①z-index:設定なし」君が一番前
んでこの時、アイフォンSEに入ってるサファリ(すみません、ぼくの実機ではなかったのでサファリのバージョンが分かりません。あと複数の人に見てもらいましたが過去のアイフォンだと、アイフォンSEに限らずこのバグが出てました)以外のブラウザならちゃんとイメージ図通りに表示されるんですが、アイフォンSEとか過去機種のアイフォンだとこういう表示になります。
- 「②position:absolute & z-index:-1」君がなぜか一番背面に
- 「③position:fixed & z-index:-2」
- 「①z-index:設定なし」
なんていうかposition:fixedを指定した要素だけ別枠扱いになってるんですよね、アイフォンSEとか昔のアイフォンに入ってるサファリは。
解決方法
よーく考えると「②position:absolute & z-index:-1」君はz-indexなくてもいいじゃん、なければ勝手に「③position:fixed & z-index:-2」君の上に来るんだから。という事に気づき、
「②position:absolute & z-index:-1」
↓
「②position:absolute」
にして、「③position:fixed & z-index:-2」君のz-indexも-2である必要がなくなったんで-1にして解決できます。
……
…
でもアイフォンマジでやだなー。アイフォン13でしれっと直すならほかのサファリブラウザもアップデートしてほしい…。んでもっというとこの不具合の起点である「background-attachment:fixed」に対応してほしい…。
まとめ
アイフォンSE(と過去機種のアイフォン、アイフォン13除く)で発生する不具合、「position:fixed」を指定した要素のz-indexが意図したとおりに効かない問題を紹介しました。
うーん、アイフォンなー…。