透過背景の完璧なPNGをApple Touch Icon用にアップロードしたのに、デスクトップでは綺麗に見えるのに、iPhoneのSafariでロゴの周りに白い四角が表示されてしまう。まるで白い紙にシールを貼ったみたいに。私も経験があります。正しく設定したはずなのに、なぜ?というフラストレーション、よくわかります。修正方法は思ったより簡単で、アイコンをデザインし直す必要はありません。
クイックフィックス:正しいHTMLタグを追加する
apple touch icon transparent backgroundが白い四角で表示される最も一般的な原因は、iOS Safariがデフォルトのアイコンにフォールバックしていることです。おそらくrel='apple-touch-icon'タグが不足しているか、間違ったサイズを使用しています。必要なHTMLはこれだけです:
<link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon-180x180.png'>たった1行です。sizes='180x180'属性がiOSにこの特定のファイルを使用するよう指示します。これがないと、Safariがアイコンを無視して白いプレースホルダーを表示する可能性があります。
なぜ180x180なのか?
Appleは最新のiPhone(iPhone 6s以降)に180x180ピクセルを推奨しています。古いデバイスでも問題なくフォールバックします。複数のサイズを生成する場合は、Apple Touch Icon Sizes Guideをご覧ください。しかし、正直なところ180x180でほぼすべてをカバーできます。
根本原因:なぜ透過が壊れるのか
正しいHTMLを設定しても、白い背景が表示されることがあります。本当の原因は次の3つです:
- iOSのキャッシュが強力すぎる。 iPhoneのSafariはアイコンをSQLiteデータベースに保存します。以前に白い背景のバージョンをアップロードした場合、iOSはそれを記憶しています。Safariのキャッシュをクリアするか、ファイル名を変更する必要があります。
- PNGが本当に透過していない。 一部の画像エディタは、透過領域を不透明度0の白いピクセルとして保存します。iOSはそれを白としてレンダリングします。Mzu favicondlのようなツールを使用して、PNGのアルファチャンネルを確認してください。
- JPGやPNG以外の形式を使用している。 iOSはApple Touch IconにPNGのみをサポートしています。JPGは常に不透明な背景を持ちます。
PNGの透過性を確認する方法
ブラウザでアイコンを開いてください。チェッカーボードパターンが表示されれば、透過性は問題ありません。白やグレーのベタ塗り背景が表示される場合、PNGに問題があります。デザインツールから「透明度」にチェックを入れて再エクスポートしてください。
予防のヒント:白い四角を永久に防ぐ
一度修正したら、再発させたくないですよね。私が実践している方法をご紹介します:
Apple Touch IconにSVGを使う(はい、動作します)
iOS 14以降はApple Touch IconにSVGをサポートしています。SVGは透過性をネイティブに処理するため、白い四角やアルファチャンネルの問題は発生しません。タグは次の通りです:
<link rel='apple-touch-icon' sizes='180x180' href='/apple-touch-icon.svg' type='image/svg+xml'>私は6ヶ月前に自分のサイトでSVGに切り替えましたが、問題はゼロです。唯一の注意点は、古いiOSバージョン(iOS 13以下)はSVGを無視することです。PNGのフォールバックを用意しておきましょう。
キャッシュバスティング:ファイル名を変更する
アイコンを更新するたびに、ファイル名を変更してください。apple-touch-icon.pngの代わりにapple-touch-icon-v2.pngを使用します。これにより、iOSはキャッシュされた白い背景のバージョンではなく、新しいファイルをダウンロードするようになります。
実機でテストする
シミュレーターを信用しないでください。サイトをiPhoneのホーム画面に追加して、アイコンを確認してください。白い四角が表示されれば、すぐにわかります。完全なチェックリストについては、Apple Touch Icon Complete Setup Guideをご覧ください。
'precomposed'属性はどうする?
古いチュートリアルではrel='apple-touch-icon-precomposed'を推奨しているものがあります。これはiOS 6以前のもので、アイコンに光沢効果を追加するためのものでした。現代のiOSはこれを無視します。使用しないでください。単なる無駄です。白い四角の問題は、ほとんどの場合、タグの欠落、古いアイコンのキャッシュ、または透過性のないPNGが原因です。これら3つを修正すれば、アイコンはすべてのiPhoneでネイティブに見えるようになります。