よくある原因
Safariでbackdrop-filterが効かない最も多い原因は、`-webkit-backdrop-filter`プレフィックス版の欠落です。ChromeやFirefoxは`backdrop-filter: blur(10px)`のみで動作しますが、Safari(特にiOS Safari)はWebKitプレフィックス付きの`-webkit-backdrop-filter: blur(10px)`も必要です。AI生成HTMLではプレフィックスなし版だけが出力されるケースが多いです。
もう一つの原因は、backdrop-filterを適用する要素の親要素に`overflow: hidden`が設定されているケースです。Safariでは親要素にoverflow: hiddenがあると、backdrop-filterの背景ぼかし処理がクリッピングされて見えなくなることがあります。`overflow: clip`に変更するか、別の要素で囲む構造変更で解決できます。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
自分側で確認すること
CSSファイル(またはstyleタグ)を検索して`backdrop-filter`を含む行を特定します。`-webkit-backdrop-filter`が同じ値で直前の行にあるかを確認してください。なければ追加します。例:`-webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);`。Safariはこの順序で記述することが推奨されています。
修正後にSafariで確認します。手元にMacがあればSafariを開いてHTMLを確認できます。iPhoneのSafariで確認したい場合は、Mac SafariのDevelop→Simulator→iOS版Safari、またはギガサイト便で公開後にiPhoneのSafariでURLを開いてください。backdrop-filterのぼかし処理は背景が透けて見えるかどうかで判断できます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
相手側で確認すること
受け取り側から「フロストガラス効果がない」と報告された場合、まずSafariのバージョンを確認してもらいます。`Safari→About Safari`でバージョンが確認でき、Safari 15.4以降はプレフィックスなし版でも動作します。それ以前のバージョンでは必ずプレフィックス版が必要です。
「見え方が違う」程度の報告の場合、スクリーンショットを送ってもらうと状況が把握しやすくなります。backdrop-filterが全く無効なら背景が見え、部分的に機能していればぼけているが色が薄いなどの違いがあります。スクリーンショットの状態でプレフィックス欠落かoverflow問題かを推定できます。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
再発防止の運用
AIへのプロンプトに「backdrop-filterを使う場合は必ず-webkit-backdrop-filterも同じ値で追加すること」と記載します。また「backdrop-filterを適用する要素の親にoverflow: hiddenを設定しないこと」も追記すると、Safariの既知バグを回避したHTMLが生成されます。
定期的にSafari・iOS Safariでの表示確認をルーティン化することも重要です。ギガサイト便で公開後、確認フローに「iPhoneのSafariで開く」ステップを加えるだけで受信者からのSafari関連の報告を未然に防げます。Mac をお持ちであればSafariの開発者メニューからiOSシミュレーターを使う方法もあります。
- HTML内の外部script・form action・iframeを確認する
- APIキーやトークンらしき文字列がないか検索する
- 画像・CSS・JSのパスが公開後も解決できるか見る
- noindexと認証を混同せず、必要なら両方設定する
よくある質問
-webkit-backdrop-filterを追加したのにまだSafariで動きません
backdrop-filterはz-indexが設定された要素でないと正しく動作しないことがあります。対象要素に`position: relative; z-index: 0`を追加してみてください。また`will-change: transform`を設定するとSafariのGPUコンポジットが有効になりぼかしが表示されるケースがあります。
backdrop-filterを使わずに似た見た目を作る代替手段はありますか
疑似要素(::before)に背景画像をblurフィルターで表示し、親要素のoverf低owで切り取る手法がSafari旧バージョン向けの代替として有効です。ただしCSSが複雑になるため、backdrop-filterのフォールバックとして背景色の半透明指定(rgba)を添えておく方がシンプルです。
Chromeでは綺麗に見えるのにSafariでぼかしが薄いです
Safariはbackdrop-filterのblur値の解釈がChromeと微妙に異なります。blur(10px)でChromeとSafariの見た目を合わせたい場合、Safariでは少し大きめの値(例: blur(15px))を`@supports (-webkit-backdrop-filter: blur(1px))`で指定する方法が有効です。