😸
CSSのネスト記法が端末によって適用されない問題
問題
CSSのネスト記法が各ブラウザでサポートされるようになったため、サイト制作時に試してみたところ一部の端末でレイアウトが適用されていない問題が発生しました。
参考:Sassなしで入れ子が可能に。CSSネストが全ブラウザ対応
特定の端末のみの問題となっており、他の端末では再現できないことから原因を調べてみました。
解決法
調査したところ、下記の記事で紹介されていた内容と今回の問題が類似しており、CSSネスト記法が原因だということがわかりました。
参考:CSSのネスト(入れ子)は、当面の間は「&記号」を付けた方が安心か | メモルカ
CSSネスト記法で「& 入れ子セレクター」を使用して修正したところ、問題が解決されました。
iPhoneとAndroidで同様の事象が発生していたため、OSのバージョンによってはCSSのネスト記法で入れ子セレクターが必要になるようです。
.container {
a {
/* iOSバージョン17.2以降であれば問題なし */
/* Androidバージョン9.0以降であれば問題なし */
color: blue;
text-decoration: none;
}
& a {
/* iOSバージョン17.1以前は入れ子のセレクターを付ける */
/* Androidバージョン8.0以前は入れ子のセレクターを付ける */
color: blue;
text-decoration: none;
}
}
該当のユーザーはどのくらいいるのか
上記のバージョンのシェア率についても最新のデータを調べてみました。
- iOSバージョン17以前:6.44%(2025年1月時点)
- Android 8.0以前のシェア率の合計:3.59%(2025年4月時点)
参照元
- 【2025年1月版】iOSバージョン別シェア率まとめ|現時点ではiOS18.1が全体の約4割を占める| Qbook
- AndroidのOSバージョンシェア 2025年4月:ついにAndroid 15がシェアトップに – OREFOLDER
まだ一定数の対象ユーザーがいるため、当分の間は入れ子セレクターをつけておくことが安全です。
まとめ
CSSのネスト記法は全ブラウザでサポートされているが、全ユーザーが最新のバージョンにアップデートしているわけではないため、導入する際には互換性のある書き方をする必要があるとわかりました。
Discussion