font プロパティ (CSS)
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
font は CSS の一括指定プロパティで、要素のフォントの様々なプロパティをすべて設定します。また、要素のフォントにシステムフォントを設定することもできます。
試してみましょう
font:
1.2rem "Fira Sans",
sans-serif;
font:
italic 1.2rem "Fira Sans",
serif;
font: italic small-caps bold 16px/2 cursive;
font: small-caps bold 24px/1 sans-serif;
font: caption;
<section id="default-example">
<q id="example-element">
Prejudices, it is well known, are most difficult to eradicate from the heart
whose soil has never been loosened or fertilized by education: they grow
there, firm as weeds among stones.
</q>
</section>
@font-face {
font-family: "Fira Sans";
src:
local("FiraSans-Regular"),
url("/shared-assets/fonts/FiraSans-Regular.woff2") format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Fira Sans";
src:
local("FiraSans-Italic"),
url("/shared-assets/fonts/FiraSans-Italic.woff2") format("woff2");
font-weight: normal;
font-style: italic;
}
section {
margin-top: 10px;
font-size: 1.1em;
}
構成要素のプロパティ
このプロパティは以下の CSS プロパティの一括指定です。
リセットのみのサブプロパティ
このプロパティは、以下の CSS プロパティを初期値にリセットします。
構文
/* font-size font-family */
font: 1.2em sans-serif;
/* font-size/line-height font-family */
font: 1.2em/2 "Fira Sans", sans-serif;
/* font-style font-weight font-size font-family */
font: italic bold 1.2em monospace;
/* font-width font-variant font-size font-family */
font: ultra-condensed small-caps 1.2em Montserrat, Helvetica, sans-serif;
/* システムフォント */
font: caption;
値
この値は、フォントに関連するさまざまなプロパティを指定する一括指定、または単一の <system-font-family-name> キーワードのどちらかです。
<'font-style'>省略可-
font-styleプロパティを参照してください。デフォルト値はnormalです。 <font-variant-css2>省略可-
font-variantプロパティのnormalまたはsmall-capsのどちらかの値です。デフォルト値はnormalです。 <'font-weight'>省略可-
font-weightプロパティを参照してください。デフォルト値はnormalです。 <font-width-css3>省略可-
font-widthプロパティで対応しているキーワードです。デフォルト値はnormalです。 <'font-size'>-
font-sizeプロパティを参照してください。 <'line-height'>省略可-
line-heightプロパティを参照してください。デフォルト値はnormalです。 <'font-family'>-
font-familyプロパティを参照してください。最後の値である必要があります。 <system-font-family-name>-
システムフォントを表す単一のキーワード。以下のいずれかです。
caption-
キャプション付きコントロール(ボタン、ドロップダウンなど)に使われるシステムフォント。
icon-
ラベルアイコンに使用されるシステムフォント。
-
メニュー(ドロップダウンメニュー、メニューリストなど)に使われるシステムフォント。
message-box-
ダイアログボックスに使われるシステムフォント。
small-caption-
小さいコントロールのラベルに使われるシステムフォント。
status-bar-
ウィンドウのステータスバーに使われるシステムフォント。
接頭辞をつけて実装されている標準外の値がいくつかあります。
解説
font プロパティの値は、システムフォントファミリー名を表す単一のキーワード、または要素のフォントに関するさまざまなプロパティをすべて設定するために使用される複数の個別指定プロパティの値のいずれかです。
システムフォントの宣言
font を <system-font-family-name> キーワードとして指定する場合、プロパティの値全体を、その単一のキーワード(大文字と小文字を区別しない)に設定しなければなりません。有効な値には、caption, icon, menu, message-box, small-caption, status-bar があります。
ブラウザーは、標準外の接頭辞付き値にも対応しています。
- Chromium は
-webkit-control,-webkit-small-control,-webkit-mini-controlを実装しています。 - Webkit は Chromium の値に加え、
-webkit-body,-webkit-pictograph,-webkit-ruby-textと、いくつかの-apple-system-*の接頭辞のシステムフォント名に対応しています。 - Gecko は、
-moz-window,-moz-document,-moz-desktop,-moz-info,-moz-dialog,-moz-button,-moz-pull-down-menu,-moz-list,-moz-fieldを実装しています。
システムフォント(<system-font-family-name>)は、font プロパティでのみ設定できます。font: icon のような単一のキーワード値を定義すると、そのフォントのファミリー、サイズ、太さ、スタイルなどが、ブラウザーで設定されたシステムフォントに対して定義されている値に設定されます。これらの値はすべて、font 宣言の後で記述された個別指定宣言によって変更することができます。
font プロパティの値において、<system-font-family-name> キーワードの後に font の個別指定指定を記述すると、その宣言は無効になります。例えば、font: icon small は無効です。
値の中で、<system-font-family-name> キーワードが最初の成分以外の場所に現れた場合、そのキーワードは、標準の font-family 名を表す <ident> として扱われます。例えば、font: small icon という宣言は、font-family を icon という名前のフォントに設定します。これは、存在する場合もあれば存在しない場合もある、システムフォント以外のフォントです。また、この宣言は font-size を small に設定し、その他のすべての一括指定プロパティを初期値にリセットします。
一括指定のフォント宣言
font が、いくつかのフォント関連のプロパティの一括指定として指定されている場合、次のようになります。
-
次の値を指定しなければなりません。
-
次の値は任意で指定することができます。
他の一括指定プロパティと同様、指定されていない各成分プロパティは初期値に設定され、それによって、一括指定プロパティ以外を使用して以前に設定された値が上書きされる場合があります。さらに、この一括指定プロパティは、以下のプロパティを初期値にリセットします。これらのプロパティは、この一括指定プロパティで明示的に設定することはできません。
一括指定プロパティの順序
一括指定の font 宣言に含まれる個別指定の値の一部の順序は、いくつかの規則に従わなければなりません。
font-sizeおよびfont-family成分が必要です(システムフォントの宣言の場合を除く)。font-style,font-variant,font-weightはfont-sizeよりも前になければなりません。line-heightを指定することができるのは、font-sizeを指定している場合だけです。line-heightを指定する場合は、font-sizeの直後に記載し、2 つの値はスラッシュ (/) で区切って16px / 3のように指定する必要があります。font-familyは指定される最後の値である必要があります。
値に制限がある成分
下位互換性を確保するため、font-variant および font-width 成分の有効な値には、すべての有効な値や個別指定の同等値が含まれているわけではありません。
font-variant 要素の有効な値は、normal または small-caps に限定されています。それ以外にも値は対応していないのですが、一括指定 font 宣言を使用すると、すべてのfont-variant-*の個別指定プロパティを normal にリセットします。対象となるのは font-variation-settings, font-variant-position, font-variant-emoji, font-variant-caps, font-variant-ligatures, font-variant-numeric, font-variant-east-asian, font-variant-alternates です。
font-width 要素の有効な値は、キーワード値(normal, ultra-condensed, extra-condensed, condensed, semi-condensed, semi-expanded, expanded, extra-expanded, ultra-expanded)に制限されます。個別指定の font-width プロパティは <percentage> 値にも対応していますが、この一括指定で指定することはできません。
公式定義
| 初期値 | 一括指定の次の各プロパティとして
|
|---|---|
| 適用対象 | すべての要素とテキスト。 ::first-letterおよび::first-line にも適用されます。 |
| 継承 | あり |
| パーセント値 | 一括指定の次の各プロパティとして
|
| 計算値 | 一括指定の次の各プロパティとして
|
| アニメーションの種類 | 一括指定の次の各プロパティとして
|
形式定義
font =
[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] |
<system-font-family-name>
<font-style> =
normal |
italic |
left |
right |
oblique <angle [-90deg,90deg]>?
<font-variant-css2> =
normal |
small-caps
<font-weight> =
<font-weight-absolute> |
bolder |
lighter
<font-width-css3> =
normal |
ultra-condensed |
extra-condensed |
condensed |
semi-condensed |
semi-expanded |
expanded |
extra-expanded |
ultra-expanded
<font-size> =
<absolute-size> |
<relative-size> |
<length-percentage [0,∞]> |
math
<line-height> =
normal |
<number [0,∞]> |
<length-percentage [0,∞]>
<font-family> =
[ <font-family-name> | <generic-font-family> ]#
<system-font-family-name> =
caption |
icon |
menu |
message-box |
small-caption |
status-bar
<font-weight-absolute> =
normal |
bold |
<number [1,1000]>
<absolute-size> =
xx-small |
x-small |
small |
medium |
large |
x-large |
xx-large |
xxx-large
<relative-size> =
larger |
smaller
<length-percentage> =
<length> |
<percentage>
<font-family-name> =
<string> |
<custom-ident>+
<generic-font-family> =
<generic-font-script-specific> |
<generic-font-complete> |
<generic-font-incomplete>
<generic-font-script-specific> =
generic( fangsong ) |
generic( kai ) |
generic( khmer-mul ) |
generic( nastaliq )
<generic-font-complete> =
serif |
sans-serif |
system-ui |
cursive |
fantasy |
math |
monospace
<generic-font-incomplete> =
ui-serif |
ui-sans-serif |
ui-monospace |
ui-rounded
例
>基本的な使い方
この例では、font ですべての <p> 要素のフォントを定義しています。font-size を 12px、line-height を 14px に設定し、スラッシュ (/) で区切っています。また、この宣言では font-family を sans-serif に設定しています。
p {
font: 12px / 14px sans-serif;
}
複数のプロパティ
この例では、font-weight を bold、font-style を italic、font-size を large、line-height を 1.6、font-family を serif に設定しています。
p {
font: bold italic large / 1.6 serif;
}
システムフォント
この例では、font プロパティを使用してシステムフォントを設定する方法を示しています。
CSS
その段落のフォントを、ウィンドウのステータスバーと同じ font-family、line-height、font-size などを持つように設定し、その後、line-height を 1.6 に設定します。
p {
font: status-bar;
line-height: 1.6;
}
HTML
この HTML には段落 (<p>) があり、その中に複雑な href 属性値を持つリンク (<a>) をあります。レンダリングされたリンクにカーソルを合わせたり、フォーカスを合わせたりすると、ブラウザーのステータスバーに href 属性の値を表示させるはずです。
<p>
<a
href="/%20The%20font%20should%20be%20the%20same%20
family%20and%20size%20and%20the%20text%20in%20the%20example."
>このテキストにカーソルを合わせたり、フォーカスを合わせたりしてみてください。フォントは、ステータスバーのテキストと同じフォントファミリーおよびサイズである必要があります。</a
>
</p>
JavaScript
HTML リンクに URL を直接記述するのは望ましくないため、リンクがクリックされた際に、存在しないページへリダイレクトされるのを防ぐスクリプトを記載しています。
const aElem = document.querySelector("a");
aElem.addEventListener("click", (e) => {
e.preventDefault();
return false;
});
結果
リンクにカーソルを合わせたり、リンクを選択したりしてみてください。フォントは、ブラウザーウィンドウの下部にあるステータスバーのテキストと同じフォントファミリーおよびサイズである必要があります。
一括指定装飾クリエイター
このライブデモでは、さまざまなラジオボタンを選択して異なる一括指定値を生成すると同時に、作成した一括指定宣言の効果を視覚的に確認することができます。
仕様書
| 仕様書 |
|---|
| CSS Fonts Module Level 4> # font-prop> |
ブラウザーの互換性
関連情報
font-stylefont-weight- System font stack - CSS-Tricks (2017)