Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【CSS Modules】font-displayアットルール記述子の使い方

font-displayアットルール記述子の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

font-displayプロパティは、CSSの@font-faceルール内で使用され、ウェブページに適用されるカスタムフォント(ウェブフォント)が、実際に読み込まれて表示されるまでの間に、ブラウザがどのようにテキストを表示するかを制御するプロパティです。このプロパティは、ウェブサイトのユーザー体験において、フォントの読み込み速度と表示のバランスを取るために非常に重要な役割を果たします。

ウェブフォントはデザインの自由度を高めますが、そのファイルサイズによっては読み込みに時間がかかり、テキストの表示が遅れることがあります。font-displayプロパティを設定することで、フォントの読み込み中にテキストを一時的に非表示にするか、システムに存在する代替フォントで仮表示するか、といった挙動を開発者が選択できるようになります。

例えば、swap値を使用すると、ウェブフォントが読み込まれるまでの間、代替フォントでテキストが表示され、読み込み完了後すぐにウェブフォントに切り替わります。これにより、ユーザーはコンテンツを待つことなく読み始められ、ウェブサイトの使いやすさが向上します。

システムエンジニアを目指す方にとって、このfont-displayプロパティを理解し適切に活用することは、ウェブサイトのパフォーマンスとユーザーエクスペリエンスを最適化する上で不可欠な知識です。ウェブフォントの表示方法を適切に制御することで、ページの読み込み体感を改善し、視覚的な安定性を高めることができるでしょう。

公式リファレンス: font-display

構文(syntax)

1font-display: swap;

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

CSS font-display: swap でフォント表示を最適化する

1@font-face {
2  font-family: 'MyWebFont'; /* カスタムフォントの名前を定義 */
3  src: url('path/to/mywebfont.woff2') format('woff2'), /* フォントファイルのパスと形式 */
4       url('path/to/mywebfont.woff') format('woff');
5  font-weight: normal; /* フォントの太さを指定 */
6  font-style: normal; /* フォントのスタイルを指定 */
7  /*
8   * font-display: swap; は、ウェブフォントの読み込み戦略を定義します。
9   * これにより、カスタムフォントが読み込まれるまで、システムフォント(代替フォント)でテキストがすぐに表示されます。
10   * カスタムフォントの読み込みが完了すると、自動的にそのフォントに置き換わります(スワップ)。
11   * これは、コンテンツの表示を速くし、ユーザー体験を向上させるために推奨されます。
12   */
13  font-display: swap;
14}
15
16body {
17  /* 定義したカスタムフォントを body 要素に適用します。 */
18  /* カスタムフォントが読み込まれるまでは、代替フォントとして sans-serif が使用されます。 */
19  font-family: 'MyWebFont', sans-serif;
20  font-size: 1.2em; /* テキストのサイズを調整 */
21  margin: 20px; /* 余白を追加 */
22  color: #333; /* 文字色を設定 */
23}

このサンプルコードは、ウェブサイトにカスタムフォントを適用する際に、その表示戦略を制御するCSSのfont-displayプロパティのswap値について説明しています。

まず、@font-faceルールを用いて、MyWebFontというカスタムフォントを定義しています。ここでは、フォントファイルのパスや太さ、スタイルなどを指定します。このルール内で記述されているfont-display: swap;が本題です。

font-displayプロパティは、ウェブフォントが読み込まれるまでの間、ブラウザがテキストをどのように表示するかを決定します。特にswapという値は、カスタムフォントのダウンロードが完了するまで、まずシステムに用意されている代替フォント(例えば、sans-serifなど)でテキストをすぐに表示するようブラウザに指示します。カスタムフォントの読み込みが完了次第、その代替フォントからカスタムフォントへと自動的に切り替わります。このプロパティ自体に引数や戻り値はなく、指定された値によってブラウザの表示挙動が制御されます。

swapを利用することで、ユーザーはウェブフォントの読み込みを待つことなくコンテンツを素早く見ることができ、ウェブサイトの表示速度とユーザー体験の向上に貢献します。

body要素では、定義したMyWebFontを実際に適用しています。font-family: 'MyWebFont', sans-serif;のように代替フォント(sans-serif)も指定することで、カスタムフォントが何らかの理由で利用できない場合でも、テキストが適切に表示されるように配慮しています。

font-display: swap;は、ウェブフォントの読み込み遅延による表示の遅れを防ぎ、ユーザー体験を向上させるための重要な設定です。この設定は必ず@font-faceルール内に記述してください。swapを指定すると、カスタムフォントが読み込まれるまでの間、システムフォントが一時的に表示され、読み込み完了後にカスタムフォントに自動的に置き換わります。このフォントの切り替わり(スワップ)によって、テキストの行の高さなどがわずかに変動する可能性がありますので、表示を確認することが重要です。また、font-familyには必ずsans-serifのような代替フォントを指定し、カスタムフォントが利用できない場合でも正しく表示されるようにしましょう。この設定は、ページの初期表示速度向上に貢献するため、ウェブフォントを使用する際には積極的に利用を検討してください。

CSS font-displayプロパティでフォント表示を制御する

1/*
2 * @font-face ルール内で font-display プロパティを使用して、
3 * Web フォントが読み込まれるまでの表示方法を制御します。
4 *
5 * この例では 'swap' を使用しており、フォントがまだ読み込まれていない間は
6 * システムフォントでテキストを表示し、読み込みが完了したらWebフォントに置き換えます。
7 */
8@font-face {
9  font-family: 'MyCustomFont'; /* フォントファミリーの名前を定義 */
10  src: url('/fonts/mycustomfont.woff2') format('woff2'), /* フォントファイルのパスと形式 */
11       url('/fonts/mycustomfont.woff') format('woff');
12  font-weight: normal; /* フォントの太さ */
13  font-style: normal; /* フォントのスタイル */
14  font-display: swap; /* フォントの表示方法を定義 (例: swap, auto, block, fallback, optional) */
15}
16
17/*
18 * 定義したカスタムフォントをHTML要素に適用する例。
19 */
20body {
21  font-family: 'MyCustomFont', sans-serif; /* カスタムフォントを適用、読み込み失敗時の代替フォントも指定 */
22}

CSSのfont-displayプロパティは、Webサイトでカスタムフォントを使用する際に、そのフォントファイルがまだ読み込み中の間、ブラウザがテキストをどのように表示するかを制御するものです。これは、ユーザーがコンテンツをスムーズに閲覧できるようにするための重要な設定となります。

サンプルコードでは、まず@font-faceルールを用いてカスタムフォント「MyCustomFont」を定義しています。ここではfont-familyでフォントの名前を指定し、srcで実際のフォントファイルの場所と形式をブラウザに伝えています。そして、この@font-faceルール内でfont-display: swap;と指定されています。

font-display: swap;が設定されている場合、Webフォントの読み込みが完了するまでの間、ブラウザはユーザーのシステムにインストールされているデフォルトのフォント(例:ゴシック体、明朝体など)でテキストを表示します。その後、カスタムフォントの読み込みが完了すると、自動的にそのWebフォントに置き換わります。これにより、フォントの読み込み待ちでテキストが全く表示されない「FOIT (Flash Of Invisible Text)」という現象を防ぎ、ユーザーはすぐに内容を読み始めることができます。font-displayにはautoblockfallbackoptionalといった他の値もあり、それぞれ異なる表示挙動を提供します。

font-displayプロパティ自体は、直接的な引数や戻り値を持つ関数のようなものではなく、指定されたキーワード値によってブラウザのフォント表示ポリシーを定義する記述子です。

最後に、bodyセレクタでfont-family: 'MyCustomFont', sans-serif;と指定することで、定義したカスタムフォントをWebページ全体に適用しています。sans-serifは、カスタムフォントの読み込みに失敗した場合やサポートされていない場合に備えた代替フォントの指定であり、これにより表示の安定性を確保します。

font-displayプロパティは、Webフォントが読み込まれるまでのテキスト表示方法を制御し、ユーザー体験に大きく影響します。サンプルコードのswapは、Webフォントの読み込みが完了するまで一時的にシステムフォントで表示し、完了後にWebフォントへ切り替えるため、この切り替わりの際にテキストの見た目が一瞬変化する点(FOUT)に注意が必要です。blockはフォントが読み込まれるまでテキストを非表示にするため初期表示が遅れる可能性があり、optionalはWebフォントの使用を諦める選択肢も含まれるため、サイトの要件に応じて慎重に値を選んでください。さらに、font-familyプロパティには必ずsans-serifなどの代替フォントを複数指定し、Webフォントの読み込みに失敗した場合でも、テキストが常に適切に表示されるように準備することが重要です。

関連コンテンツ

関連プログラミング言語