GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||
GeezerVison is showing developer.mozilla.org — font CSS property - CSS | MDN
|
| Initial value | as each of the properties of the shorthand:
|
|---|---|
| Applies to | all elements and text. It also applies to ::first-letter and ::first-line. |
| Inherited | yes |
| Percentages | as each of the properties of the shorthand:
|
| Computed value | as each of the properties of the shorthand:
|
| Animation type | as each of the properties of the shorthand:
|
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
This example defines the font for all <p> elements. We set the font-size to 12px and the line-height to 14px, separating them with a forward slash (/). The declaration also sets the font-family to sans-serif.
p {
font: 12px / 14px sans-serif;
}
<p>
This is a paragraph of sans-serif text. The font-size is small, at just 12px.
If this text wraps, the line height is pretty tight at 14px, so this may be
difficult to read.
</p>
In this example, we set the font-weight to bold, the font-style to italic, the font-size to large, the line-height to 1.6, and the font-family to serif.
p {
font: bold italic large / 1.6 serif;
}
<p>
In this example, we set the font weight to bold, the font style to italic, the
font size to large, the line height to 1.6, and the font family to serif.
</p>
This example demonstrates using the font property to set a system font.
We set the paragraph's font to have the same font-family, line-height, font-size, etc., as the status bar of the window, then we set the line-height to 1.6.
p {
font: status-bar;
line-height: 1.6;
}
Our HTML includes a paragraph (<p>) containing a link (<a>) with a convoluted href attribute value. When you hover or focus the rendered link, your browser's status bar should display the value of the href attribute.
<p>
<a
href="/%20The%20font%20should%20be%20the%20same%20
family%20and%20size%20and%20the%20text%20in%20the%20example."
>Hover or focus this text. The font should be the same family and size and
the text in your status bar.</a
>
</p>
As the URL in our HTML link is not good practice, we include a script that prevents the document from redirecting to a non-existent page when the link is clicked.
const aElem = document.querySelector("a");
aElem.addEventListener("click", (e) => {
e.preventDefault();
return false;
});
Hover or focus the link. The font should be the same family and size as the text in your status bar at the bottom of your browser window.
In this live demonstration, you can select different radio buttons to generate different shorthand values, while visualizing the effects of the shorthand declarations you create.
<p>
Change the radio buttons below to see the generated shorthand and its effect.
</p>
<form action="createShortHand()">
<div class="cf">
<div class="setPropCont">
font-style<br />
<input
type="radio"
id="font-style-none"
name="font_style"
checked
value="" />
<label for="font-style-none">omit value</label><br />
<input
type="radio"
id="font-style-normal"
name="font_style"
value="normal" />
<label for="font-style-normal">normal</label><br />
<input
type="radio"
id="font-style-italic"
name="font_style"
value="italic" />
<label for="font-style-italic">italic</label><br />
<input
type="radio"
id="font-style-oblique"
name="font_style"
value="oblique" />
<label for="font-style-oblique">oblique</label>
</div>
<div class="setPropCont">
font-variant<br />
<input
type="radio"
id="font-variant-none"
name="font_variant"
checked
value=" " />
<label for="font-variant-none">omit value</label><br />
<input
type="radio"
id="font-variant-normal"
name="font_variant"
value="normal" />
<label for="font-variant-normal">normal</label><br />
<input
type="radio"
id="font-variant-small-caps"
name="font_variant"
value="small-caps" />
<label for="font-variant-small-caps">small-caps</label>
</div>
<div class="setPropCont">
font-weight<br />
<input type="radio" id="font-weight-none" name="font_weight" value="" />
<label for="font-weight-none">omit value</label><br />
<input
type="radio"
id="font-weight-normal"
checked
name="font_weight"
value="400" />
<label for="font-weight-normal">normal</label><br />
<input
type="radio"
id="font-weight-bold"
name="font_weight"
value="700" />
<label for="font-weight-bold">bold</label>
</div>
<div class="setPropCont">
font-size<br />
<input type="radio" id="font-size-12px" name="font_size" value="12px" />
<label for="font-size-12px">12px</label><br />
<input
type="radio"
id="font-size-16px"
name="font_size"
value="16px"
checked />
<label for="font-size-16px">16px</label><br />
<input type="radio" id="font-size-24px" name="font_size" value="24px" />
<label for="font-size-24px">24px</label>
</div>
<div class="setPropCont">
line-height<br />
<input
type="radio"
id="line-height-none"
name="line_height"
checked
value="" />
<label for="line-height-none">omit value</label><br />
<input
type="radio"
id="line-height-1-2"
name="line_height"
value="/1.2" />
<label for="line-height-1-2">1.2</label><br />
<input type="radio" id="line-height-3" name="line_height" value="/3" />
<label for="line-height-3">3</label>
</div>
<br />
<div class="setPropCont fontfamily">
font-family<br />
<input
type="radio"
id="font-family-courier"
name="font_family"
checked
value="courier" />
<label for="font-family-courier">courier</label><br />
<input
type="radio"
id="font-family-serif"
name="font_family"
value="serif" />
<label for="font-family-serif">serif</label><br />
<input
type="radio"
id="font-family-sans-serif"
name="font_family"
value="sans-serif" />
<label for="font-family-sans-serif">sans-serif</label><br />
<input
type="radio"
id="font-family-arial"
name="font_family"
value="arial" />
<label for="font-family-arial">Arial</label><br />
<input
type="radio"
id="font-family-monospace"
name="font_family"
value="monospace" />
<label for="font-family-monospace">monospace</label><br />
<input
type="radio"
id="font-family-cursive"
name="font_family"
value="cursive" />
<label for="font-family-cursive">cursive</label><br />
<input
type="radio"
id="font-family-fantasy"
name="font_family"
value="fantasy" />
<label for="font-family-fantasy">fantasy</label><br />
<input
type="radio"
id="font-family-system-ui"
name="font_family"
value="system-ui" />
<label for="font-family-system-ui">system-ui</label><br />
</div>
</div>
<div class="cf propInputs">
<div class="propInputCont tar">font :</div>
<div class="propInputCont">
<input type="text" class="curCss" id="input_font_style" /><br />
font-style <br />
optional
</div>
<div class="propInputCont">
<input type="text" class="curCss" id="input_font_variant" /> <br />
font-variant <br />
optional
</div>
<div class="propInputCont">
<input type="text" class="curCss" id="input_font_weight" /> <br />
font-weight <br />
optional
</div>
<div class="propInputCont">
<input type="text" class="curCss mandatory" id="input_font_size" /> <br />
font-size <br />
mandatory
</div>
<div class="propInputCont">
<input type="text" class="curCss" id="input_line_height" /> <br />
line-height <br />
optional
</div>
<div class="propInputCont">
<input type="text" class="curCss mandatory" id="input_font_family" />
<br />
font-family <br />
mandatory
</div>
</div>
</form>
<div class="fontShortHand">
This is some sample text.<br />
This is some more sample text.
</div>
body,
input {
font: 14px "Arial";
overflow: hidden;
}
.propInputCont {
float: left;
text-align: center;
margin-right: 5px;
width: 80px;
}
.setPropCont {
float: left;
margin-right: 5px;
width: 120px;
}
.propInputs,
.setPropCont {
margin-bottom: 1em;
}
.curCss {
border: none;
border-bottom: 1px solid black;
text-align: center;
width: 80px;
}
.mandatory {
border-bottom-color: red;
}
.cf::before,
.cf::after {
content: " ";
display: table;
}
.cf::after {
clear: both;
}
.tar {
width: 40px;
text-align: right;
}
.fontfamily {
display: inline-block;
}
const textAreas = document.getElementsByClassName("curCss");
function getProperties() {
return (
`${getCheckedValue("font_style")} ` +
`${getCheckedValue("font_variant")} ` +
`${getCheckedValue("font_weight")} ` +
`${getCheckedValue("font_size")}` +
`${getCheckedValue("line_height")} ` +
`${getCheckedValue("font_family")}`
);
}
function getCheckedValue(radioName) {
const radios = document.forms[0].elements[radioName];
for (const radio of radios) {
if (radio.checked) {
const curElemName = `input_${radioName}`;
const curElem = document.getElementById(curElemName);
curElem.value = radio.value;
return radio.value;
}
}
}
function setCss() {
injectCss(getProperties());
}
function injectCss(cssFragment) {
const old = document.body.getElementsByTagName("style");
if (old.length > 1) {
old[1].parentElement.removeChild(old[1]);
}
css = document.createElement("style");
css.textContent = `.fontShortHand{font: ${cssFragment}}`;
document.body.appendChild(css);
}
setCss();
document.querySelectorAll("input[type='radio']").forEach((el) => {
el.addEventListener("change", setCss);
});
| Specification |
|---|
| CSS Fonts Module Level 4 # font-prop |
font-stylefont-weight