The ::first-line
CSS pseudo-element applies styles to the first line of a block-level element. Note that 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.
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
.
CSS3 introduced the ::first-line
notation (with two colons) to distinguish pseudo-classes from pseudo-elements. Browsers also accept :first-line
, introduced in CSS2.
Syntax
/* CSS3 syntax */ ::first-line /* CSS2 syntax */ :first-line
Example
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; text-transform: uppercase; /* WARNING: DO NOT USE THESE */ /* Many properties are invalid in ::first-line pseudo-classes */ margin-left: 20px; text-indent: 20px; }
Result
Specifications
Specification | Status | Comment |
---|---|---|
CSS Pseudo-Elements Level 4 The definition of '::first-line' in that specification. |
Working Draft | Defines more strictly where ::first-letter can occur.Generalizes allowed properties to typesetting, text decoration, and inline layout properties and opacity .Defines the inheritance of ::first-letter . |
CSS Text Decoration Module Level 3 The definition of 'text-shadow with ::first-line' in that specification. |
Candidate Recommendation | Allows the use of text-shadow with ::first-letter . |
Selectors Level 3 The definition of '::first-line' in that specification. |
Recommendation | Introduction of the two-colon syntax. |
CSS Level 2 (Revision 1) The definition of '::first-line' in that specification. |
Recommendation | No change. |
CSS Level 1 The definition of '::first-line' in that specification. |
Recommendation | Initial definition, using the one-colon syntax. |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 1.0[1] | (Yes) | 1.0 (1.7 or earlier) | 9.0 | 7.0[2] | 1.0[3] |
Old one-colon syntax (:first-line ) |
1.0[1] | (Yes) | 1.0 (1.7 or earlier) | 5.5 | 3.5[2] | 1.0[3] |
Feature | Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Yes)[1] | (Yes) | 1.0 (1) | No support | ? | ? |
Old one-colon syntax (:first-line ) |
(Yes)[1] | (Yes) | 1.0 (1) | ? | ? | ? |
[1] The text-transform
property does not work for ::first-line
pseudo-elements (also not for the old one-colon syntax). See Chromium bug 129669.
[2] Since Opera 15.0 (due to the switch to Blink) the text-transform
property does not work for ::first-line
pseudo-elements (also not for the old one-colon syntax). See Chromium bug 129669.
[3] The text-transform
property does not work for ::first-line
pseudo-elements (also not for the old one-colon syntax). See WebKit bug 3409.