Baseline Widely available *
The ::first-letter
CSS pseudo-element applies styles to the first letter of the first line of a block container, but only when not preceded by other content (such as images or inline tables).
p::first-letter {
font-size: 1.5rem;
font-weight: bold;
color: brown;
}
<p>
Scientists exploring the depths of Monterey Bay unexpectedly encountered a
rare and unique species of dragonfish. This species is the rarest of its
species.
</p>
<p>
When Robison and a team of researchers discovered this fish, they were aboard
a week-long expedition.
</p>
The first letter of an element is not always trivial to identify:
IJ
in Dutch. In these cases, both letters of the digraph should be matched by the ::first-letter
pseudo-element.::before
pseudo-element and the content
property may inject some text at the beginning of the element. In that case, ::first-letter
will match the first letter of this generated content.Note: CSS introduced the ::first-letter
notation (with two colons) to distinguish pseudo-classes from pseudo-elements. For backward compatibility, browsers also accept :first-letter
, introduced earlier.
Browser support for digraphs such as IJ
in Dutch is poor. Check the compatibility table below to see the current state of support.
Only a small subset of CSS properties can be used with the ::first-letter
pseudo-element:
font
, font-style
, font-feature-settings
, font-kerning
, font-language-override
, font-stretch
, font-synthesis
, font-variant
, font-variant-alternates
, font-variant-caps
, font-variant-east-asian
, font-variant-ligatures
, font-variant-numeric
, font-variant-position
, font-weight
, font-size
, font-size-adjust
, line-height
and font-family
background
, background-color
, background-image
, background-clip
, background-origin
, background-position
, background-repeat
, background-size
, background-attachment
, and background-blend-mode
margin
, margin-top
, margin-right
, margin-bottom
, margin-left
padding
, padding-top
, padding-right
, padding-bottom
, padding-left
border
, border-style
, border-color
, border-width
, border-radius
, border-image
, and the longhands propertiescolor
propertytext-decoration
, text-shadow
, text-transform
, letter-spacing
, word-spacing
(when appropriate), line-height
, text-decoration-color
, text-decoration-line
, text-decoration-style
, box-shadow
, float
, vertical-align
(only if float
is none
) CSS properties::first-letter {
/* ... */
}
Examples Basic drop cap
In this example we will use the ::first-letter
pseudo-element to create a drop cap effect on the first letter of the paragraph coming right after the <h2>
.
<h2>My heading</h2>
<p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
kasd gubergren, no sea takimata sanctus est.
</p>
<p>
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat.
</p>
CSS
p {
width: 500px;
line-height: 1.5;
}
h2 + p::first-letter {
color: white;
background-color: black;
border-radius: 2px;
box-shadow: 3px 3px 0 red;
font-size: 250%;
padding: 6px 3px;
margin-right: 6px;
float: left;
}
Result Effect on special punctuation and non-Latin characters
This example illustrates the effect of ::first-letter
on special punctuation and non-Latin characters.
<p>
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie
consequat.
</p>
<p>-The beginning of a special punctuation mark.</p>
<p>_The beginning of a special punctuation mark.</p>
<p>"The beginning of a special punctuation mark.</p>
<p>'The beginning of a special punctuation mark.</p>
<p>*The beginning of a special punctuation mark.</p>
<p>#The beginning of a special punctuation mark.</p>
<p>ãç¹æ®çæ±åæ ç¹ç¬¦å·å¼å¤´ã</p>
<p>ãç¹æ®çæ±åæ ç¹ç¬¦å·å¼å¤´ã</p>
<p>"ç¹æ®çæ±åæ ç¹ç¬¦å·å¼å¤´ã</p>
CSS
p::first-letter {
color: red;
font-size: 150%;
}
Result Styling first letter in SVG text element
In this example, we use the ::first-letter
pseudo-element to style the first letter of a SVG <text>
element.
Note: At time of writing this feature has limited support.
HTML<svg viewBox="0 0 300 40">
<text y="30">First letter in <text> SVG</text>
</svg>
CSS
text {
font-family: sans-serif;
}
text::first-letter {
font-family: serif;
font-size: 2rem;
font-weight: 600;
fill: tomato;
stroke: indigo;
}
Result Specifications Browser compatibility See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4