The font CSS property is either a shorthand property for setting font-style, font-variant, font-weight, font-size, line-height and font-family, or a way to set the element's font to a system font, using specific keywords.
As with any shorthand CSS properties, the values which are not set in it are set to their individual initial values, eventually overriding values previously set using non-shorthand properties.
Note: There are a few caveats when using the CSS
font shorthand. If these conditions are not met, the property is invalid and is entirely ignored.
- Except when using a keyword, it is mandatory to define the value of both the
font-sizeand thefont-familyproperties. - Not all values of
font-variantare allowed. Only the values defined in CSS 2.1 are allowed, that isnormalandsmall-caps. - Though not directly settable by
font, the values offont-stretch,font-size-adjustandfont-kerningare also reset to their initial values. - The order of the values is not completely free:
font-style,font-variantandfont-weightmust be defined, if any, before thefont-sizevalue. Theline-heightvalue must be defined immediately after thefont-size, preceded by a mandatory/. Finally thefont-familyis mandatory and must be the last value defined (inheritvalue does not work).
| Initial value | as each of the properties of the shorthand:
|
|---|---|
| Applies to | all elements. It also applies to ::first-letter and ::first-line. |
| Inherited | yes |
| Percentages | as each of the properties of the shorthand:
|
| Media | visual |
| Computed value | as each of the properties of the shorthand:
|
| Animatable | as each of the properties of the shorthand:
|
| Canonical order | order of appearance in the formal grammar of the values |
Syntax
/* size | family */ font: 2em "Open Sans", sans-serif; /* style | size | family */ font: italic 2em "Open Sans", sans-serif; /* style | variant | weight | size/line-height | family */ font: italic small-caps bolder 16px/3 cursive; /* style | variant | weight | stretch | size/line-height | family */ font: italic small-caps bolder condensed 16px/3 cursive; /* The font used in system dialogs */ font: message-box; font: icon; /* Global values */ font: inherit; font: initial; font: unset;
Values
<'font-style'>- See the
font-styleCSS property. <'font-variant'>- See the
font-variantCSS property. <'font-weight'>- See the
font-weightCSS property. <'font-stretch'>- See the
font-stretchCSS property. <'font-size'>- See the
font-sizeCSS property. <'line-height'>- See the
line-heightCSS property. <'font-family'>- See the
font-familyCSS property. captioniconmenumessage-boxsmall-captionstatus-bar- Instead of specifying individual longhand properties, a keyword can be used to represent a specific system font:
Browsers implementing these often implement several more, prefixed, values; Gecko implementscaptionThe font used for captioned controls (e.g., buttons, drop-downs, etc.). iconThe font used to label icons. menuThe font used in menus (e.g., dropdown menus and menu lists). message-boxThe font used in dialog boxes. small-captionThe font used for labeling small controls. status-barThe font used in window status bars. -moz-window,-moz-document,-moz-desktop,-moz-info,-moz-dialog,-moz-button,-moz-pull-down-menu,-moz-listand-moz-field.
Formal syntax
[ [ <‘font-style’> || <font-variant-css21> || <‘font-weight’> || <‘font-stretch’> ]? <‘font-size’> [ / <‘line-height’> ]? <‘font-family’> ] | caption | icon | menu | message-box | small-caption | status-bar
Examples
/* Set the font size to 12px and the line height to 14px. Set the font family to sans-serif */
p { font: 12px/14px sans-serif }
/* Set the font size to 80% of the parent element or default value (if no parent element present)
and set the font family to sans-serif */
p { font: 80% sans-serif }
/* Set the font weight to bold, the font-style to italic, the font size to large,
and the font family to serif. */
p { font: bold italic large serif }
/* Use the same font as the status bar of the window */
p { font: status-bar }
Live Sample
Specifications
| Specification | Status | Comment |
|---|---|---|
| CSS Fonts Module Level 3 The definition of 'font' in that specification. |
Candidate Recommendation | Added support for font-stretch values |
| CSS Level 2 (Revision 1) The definition of 'font-weight' in that specification. |
Recommendation | Added support for keywords |
| CSS Level 1 The definition of 'font' in that specification. |
Recommendation | Initial definition |
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Shorthand | 1.0 | 1.0 (1.0) | 3.0 | 3.5 | 1.0 (85) |
| System fonts | 1.0 | 1.0 (1.0) | 4.0 | 6.0 | 1.0 (85) |
Support of font-stretch values |
(Yes) | 43 (43) | ? | ? | ? |
| Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | ? | ? | ? | ? | ? |
Support of font-stretch values |
? | 43 (43) | ? | ? | ? |
Document Tags and Contributors
Tags:
Contributors to this page:
yisibl,
fscholz,
teoli,
Sebastianz,
Jeremie,
wbamberg,
HTMLValidator,
evinugur,
gorhgorh,
whit537,
kscarfone,
SiddharthBhatt,
Sheppy,
FredB,
Jesse,
ethertank,
jryans,
vlgalik,
brianloveswords,
grendel,
fryn,
Jürgen Jeka,
Kohei,
Mgjbot,
BijuGC,
Fredchat,
DBaron,
Backinblakk
Last updated by:
yisibl,