アプリのテーマと背景色をカスタマイズする

プログレッシブウェブアプリ (PWA) を構築する際には、アプリのコンテンツの外観だけでなく、アプリがインストールされた後のユーザーの端末上でのアプリの表示方法も考慮することが重要です。

アプリが表示されるウィンドウをカスタマイズするには、 theme_colorbackground_color というウェブアプリマニフェストのメンバーを使用します。

PWA マニフェストで theme_colorbackground_color メンバーを定義することで、ユーザーにより洗練された体験を提供できます。これらの小さな詳細が、 PWA を OS ネイティブアプリのような感覚に近づけ、ユーザーにとってより親しみやすいものにするのに役立ちます。

アプリウィンドウの背景色のカスタマイズ

background_color マニフェストメンバーは、アプリのスタイルシートが読み込まれる前にアプリケーションウィンドウに表示される色を定義します。

この色はスタイルシートが読み込まれる前に表示されるため、その値をアプリケーションのスタイルシート内の background-color プロパティと同じ色値に設定してください。これにより、ウェブアプリケーションの起動とコンテンツの読み込みの間でスムーズな視覚的な移行が確保されます。

値は有効な CSS の <color> です。このウェブアプリのマニフェストファイルの例では、アプリケーションの背景色は名前付き色である peachpuff に設定されています。

json
{
  "name": "My app",
  "start_url": "/",
  "icons": [
    {
      "src": "icon.webp",
      "sizes": "256x256",
      "type": "image/webp"
    }
  ],
  "display": "standalone",
  "background_color": "peachpuff"
}

このアプリケーションは、 body 要素の背景色に同じ色を適用するスタイルシートも読み込みます。

css
body {
  background-color: peachpuff;
}

次のスクリーンショットは、上記のコードが動作している様子を示しています。このコードを使用する PWA は Windows にインストールされており、スクリーンショットはアプリの内容が読み込まれる前のアプリケーションウィンドウの表示状態を示しています。

Windows 上のアプリウィンドウに、 peachpuff の背景色が表示されています。

テーマ色の定義

PWA マニフェスト内の theme_color メンバーは、アプリケーション内で使用されるオペレーティングシステムとブラウザーの UI 要素の既定の色を定義します。

端末、オペレーティングシステム、ブラウザーが異なると、theme_color メンバーが適用される方法も代わります。

  • モバイル端末では、テーマカラーがステータスバーに適用されます。
  • デスクトップオペレーティングシステムでは、テーマカラーはスタンドアロンアプリウィンドウのタイトルバーをカスタマイズするために使用されます。

theme_color は、 PWA の全体的なデザインとブランドイメージに調和し、さまざまな端末やプラットフォームで一貫したユーザー体験を提供できるように、適切に選択してください。

background_color と同様に、任意の <color> 値が有効です。このウェブアプリマニフェストファイルの例では、 theme_colorrgb(255 218 185) に設定されており、これは peachpuffRGB 相当値です。

json
{
  "name": "My app",
  "start_url": "/",
  "icons": [
    {
      "src": "icon.webp",
      "sizes": "48x48",
      "type": "image/webp"
    }
  ],
  "display": "standalone",
  "background_color": "peachpuff",
  "theme_color": "rgb(255 218 185)"
}

次のスクリーンショットは、アプリが Windows にインストールされた際に上記のコードが動作する様子です。この際、 theme_color マニフェストメンバーがタイトルバーの色として使用されています。

Windows でのアプリウィンドウのタイトルバーにテーマカラーが表示されています。

theme-color のメタ要素の値との関係

theme-color 属性値は、 name 属性を持つ <meta> 要素を使用して、各ウェブページごとのテーマカラーを定義できます。これは、アプリ全体で一度だけグローバルに定義するtheme_color マニフェストメンバーとは異なります。

両方が設定されている場合、theme-color メタ要素の値が theme_color マニフェストメンバーの値を上書きします。これにより、アプリ全体でグローバルな色を定義し、特定のページで上書きすることが可能です。

一部のブラウザー、たとえば macOS の Safari や Android の Chrome などでは、 theme-color メタ要素の値がブラウザーの UI のスタイル設定にも使用されます。

関連情報