Styling Text
What is Text Styling in CSS?
Text styling in CSS is adjusting text content of a given element through specifying the text content's:
-
font,
-
color,
-
alignment,
-
underlining & striking through with decorative line,
-
letter casing,
-
line height,
-
word and letter spacing,
-
handling white space and line breaking,
-
shadow.
Font
Font Styling Aspects
A font of a given text content can be styled in the following aspects:
-
family,
-
size,
-
weight (bolding),
-
variant (non-small-caps vs small-caps), and
-
style (italicization).
Font Family
CSS allows for specifying a font for an element's text content using the font-family
property.
Not always a specified font is available on all client devices. Therefore, a value of a font-family
property should include more than one font name simultaneously. The consecutively provided fonts serve as fallbacks in case of absence on a client device of previously specified ones. Therefore, the last provided one should be a generic like serif
, sans-serif
or monospace
.
p {
font-family: "Times New Roman", serif;
}
Multi-word font names need to be included in quotation marks.
There are three primary families of fonts:
-
serif (with letter ending small strokes) e.g. Times New Roman, Garamond,
-
sans-serif (without letter ending small strokes) e.g. Arial, Helvetica, and
-
monospace (with equal-width letters often used for presenting code syntax) e.g. Courier.
Each of the provided primary font family names can be used as a generic fallback at font-family
property.
Some fonts, like the mentioned Times New Roman or Arial, are considered a web safe fonts i.e. generally available on client devices.
Font Size
It is possible to specify a font size of a given text content using the font-size
property.
p {
font-size: 18px;
}
There are several size units that can be used to express a font-size
value.
The most often used font size units are the ones that relatively (i.e. non‑absolutely) specify the font size. The most prominent of those are:
-
px
- screen pixels, -
em
- relative to the current font size of a given element in pixels, -
rem
(root em) - relative to the font size of the root element of a given document in pixels, and -
vh
(viewport width) - where 1vh means 1% of a viewport width.
The default font size in most browsers is 16px
.
In addition to relative font size units it is possible to specify font size absolutely in inches (in
), centimeters (cm
), points (pt
) and pica (pc
) where 1 inch = 2.54 centimeters = 72 points = 6 pica.
Using relative units over absolute units for text content dedicated to be displayed on client devices of varying screen sizes such as desktop and laptop computers, smartphones, and tablets allows for user text resizing and therefore is considered a good practice.
Font Boldness
The font-weight
property allows for specifying boldness (thickness) of text content through using:
-
keywords -
normal
for unbolded text andbold
for bolded text, -
numeric values from
100
to950
where thenormal
keyword equates 400 and thebold
keyword equates700
.
p {
font-weight: bold;
}
div {
font-weight: 200;
}
Font Italicization
It is possible to italicize text content using the font-style
property. The properties values are normal
for non‑italicized text and italic
for italicized text.
p {
font-style: italic;
}
Font Small Capitalizing
To present text content as small capitalized letters use the font-variant
property and the keyword small-caps
.
p {
font-variant: small-caps;
}
Text Color
To specify text content color use the color
property. The color can be specified using:
-
RGB color values,
-
hexadecimal color values,
-
HSL color values, or
-
predefined color names.
p {
color: red;
}
Check out the chapter on colors to learn more.
Text Alignment
Horizontal Text Alignment
To horizontally align text content and nested inline and inline-block elements use text-align
property.
The text and nested inline and inline-block elements can be:
-
left aligned (
left
), -
centered (
center
), -
right aligned (
right
), and -
justified (
justify
).
p {
text-align: center;
}
Vertical Text Alignment
To vertically align text content and nested inline and inline-block elements use vertical-align
property.
The text and nested inline and inline-block elements can be vertically aligned to:
-
baseline (
baseline
), -
top (
top
), -
middle (
middle
), and -
bottom (
bottom
).
p {
vertical-align: middle;
}
Underlining & Striking Through with Decorative Line
It is possible to add a decorative line to text content using the text-decoration-
properties specifying text-decoration-line
(e.g. underline
, line-through
), text-decoration-color
, text-decoration-style
(e.g. solid
, dotted
) and text-decoration-thickness
. The text-decoration-thickness
property has limited support.
To underline text:
p {
text-decoration-line: underline;
text-decoration-color: red;
text-decoration-style: solid;
text-decoration-thickness: 2px;
}
/* Shorthand: */
p {
text-decoration: underline red solid 2px;
}
However, the text-decoration
property is often used with specifying only the line
having the remaining properties resort to defaults i.e. color being set to the color of the text, style to solid
and thickness to 1px
.
p {
text-decoration: underline;
}
To strike through text:
p {
text-decoration: line-through;
}
Uppercasing & Lowercasing
To uppercase or lowercase text content use the text-transform
property.
.foo {
text-transform: uppercase;
}
.bar {
text-transform: lowercase;
}
Line Height
To specify the height of lines of text content use the line-height
property.
It's values can be expressed in:
-
numeric multiplier of the current line height, e.g.
1
,1.2
,1.5
,2
, -
the keyword
normal
equaling the numeric multiplier of1
, -
other size units, e.g.
px
,em
.
p {
line-height: 1.5;
}
Word & Letter Spacing
To specify distance between words use the word-spacing
property.
To specify distance between letters use the letter-spacing
property.
The values of both spacing properties can be expressed in any unit sizes, e.g. px
, em
.
p {
word-spacing: 12px;
letter-spacing: 0.5px
}
Handling White Space & Line Breaking
To specify how white space is handled and how lines are broken use the white-space
property.
Text Shadow
It is possible to add a shadow to text content using the text-shadow
property.
It is possible to specify:
-
horizontal shadow size,
-
vertical shadow size,
-
blur size (optional), and
-
color (optional).
p {
text-shadow: 2px 4px 3px #00000042;
}