::first-line
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The ::first-line
CSS pseudo-element applies styles to the first line of a block container.
Try it
The effects of ::first-line
are limited by the length and content of the first line of text in the element. The length of the first line depends on many factors, including the width of the element, the width of the document, and the font size of the text. ::first-line
has no effect when the first child of the element, which would be the first part of the first line, is an inline block-level element, such as an inline table.
Note: Selectors Level 3 introduced the double-colon notation (::
) to distinguish pseudo-elements from the single-colon (:
) pseudo-classes. Browsers accept both ::first-line
and :first-line
, which was introduced in CSS2.
For the purposes of CSS background
, the ::first-line
pseudo-element is like an inline-level element meaning that in a left-justified first line, the background may not extend all the way to the right margin.
Allowable properties
Only a small subset of CSS properties can be used with the ::first-line
pseudo-element:
- All font-related properties:
font
,font-kerning
,font-style
,font-variant
,font-variant-numeric
,font-variant-position
,font-variant-east-asian
,font-variant-caps
,font-variant-alternates
,font-variant-ligatures
,font-synthesis
,font-feature-settings
,font-language-override
,font-weight
,font-size
,font-size-adjust
,font-stretch
, andfont-family
- All background-related properties:
background-color
,background-clip
,background-image
,background-origin
,background-position
,background-repeat
,background-size
,background-attachment
, andbackground-blend-mode
- The
color
property word-spacing
,letter-spacing
,text-decoration
,text-transform
, andline-height
text-shadow
,text-decoration
,text-decoration-color
,text-decoration-line
,text-decoration-style
, andvertical-align
.
Syntax
::first-line {
/* ... */
}
Examples
Styling first line of a paragraph
HTML
<p>
Styles will only be applied to the first line of this paragraph. After that,
all text will be styled like normal. See what I mean?
</p>
<span>
The first line of this text will not receive special styling because it is not
a block-level element.
</span>
CSS
::first-line {
color: blue;
font-weight: bold;
/* WARNING: DO NOT USE THESE */
/* Many properties are invalid in ::first-line pseudo-elements */
margin-left: 20px;
text-indent: 20px;
}
Result
Styling the first line of a SVG text element
In this example, we style the first line of an SVG <text>
element using the ::first-line
pseudo-element.
Note: At time of writing this feature has limited support.
HTML
<svg viewBox="0 0 320 150">
<text y="20">Here is an English paragraph
that is broken into multiple lines
in the source code so that it can
be more easily read and edited
in a text editor.
</text>
</svg>
CSS
In order to make the SVG <text>
element wrap to multiple lines, we use the white-space
CSS property. We then select the first line using the ::first-line
pseudo-element.
text {
white-space: break-spaces;
}
text::first-line {
fill: blue;
font-weight: bold;
}
Result
Specifications
Specification |
---|
CSS Pseudo-Elements Module Level 4 # first-line-pseudo |
Browser compatibility
BCD tables only load in the browser