--- title: '::first-line (:first-line)' slug: 'Web/CSS/::first-line' translation_of: 'Web/CSS/::first-line' ---
{{ CSSRef() }}
::first-line
CSS pseudo-element (CSS伪元素)在某 block-level element (块级元素)的第一行应用样式。第一行的长度取决于很多因素,包括元素宽度,文档宽度和文本的文字大小。
和其他所有的 伪元素一样,::first-line 不能匹配任何真实存在的html元素。
::first-line 伪元素只能在块容器中,所以,::first-line
伪元素只能在一个display值为block, inline-block
, table-cell
或者 table-caption
中有用.。在其他的类型中,::first-line
是不起作用的.
在一个使用了 ::first-line
伪元素的选择器中,只有很小的一部分css属性能被使用:
这个列表将来可能会被扩展,但是推荐的是,你不要使用任何上述没有提到的属性。
在CSS 2中,伪元素是以 : 开头的。由于伪类也遵循同一规则,使得他们之间难以区分。为了解决这个问题,在CSS 2.1中,伪元素支持以 :: 开头。现在,使用伪元素时更推荐以 :: 开头,而使用伪类时使用 : 开头。
因为过去的浏览器都实现过CSS 2的规则,所以现在那些支持 :: 的浏览器通常同时也支持 : 的形式。
如果需要支持老旧的浏览器,那么:first-line
是唯一的选择,反之,更推荐使用::first-line。
将每个段落中的第一行字母转换成大写
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore.</p>
p::first-line { text-transform: uppercase }
{{ EmbedLiveSample('text-transform', 250, 100) }}
margin-left
在 first-line 伪元素上无效
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore.</p>
p::first-line { margin-left: 20px }
{{ EmbedLiveSample('margin-left', 250, 100) }}
text-indent
在 first-line 伪元素上无效
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore.</p>
p::first-line { text-indent: 20px }
{{ EmbedLiveSample('text-indent', 250, 100) }}
Specification | Status | Comment |
---|---|---|
{{ SpecName('CSS4 Pseudo-Elements', '#first-line-pseudo', '::first-line')}} | {{ Spec2('CSS4 Pseudo-Elements')}} | Defined more strictly where it can occur. Generalized allowed properties to typesetting, text decoration and inline layout properties and {{ cssxref("opacity") }} Defined the inheritance of ::first-letter . |
{{ SpecName('CSS3 Text Decoration', '#text-shadow', 'text-shadow with ::first-line')}} | {{ Spec2('CSS3 Text Decoration')}} | Allowed the usage of {{cssxref("text-shadow")}} with ::first-letter . |
{{ SpecName('CSS3 Selectors', '#first-line', '::first-line') }} | {{ Spec2('CSS3 Selectors') }} | The definition of what is the first line of an element has been reworded. The two-colon syntax for pseudo-elements has been introduced. |
{{ SpecName('CSS2.1', 'selector.html#first-line-pseudo', '::first-line') }} | {{ Spec2('CSS2.1') }} | No significant change, though CSS Level 2 still used the one-colon syntax. |
{{ SpecName('CSS1', '#the-first-line-pseudo-element', '::first-line') }} | {{ Spec2('CSS1') }} | The initial definition used the one-colon syntax. |
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 1.0 (buggy when using text-transform : issue 129669) |
{{ CompatGeckoDesktop("1") }} | 9.0 | 7.0 | 1.0 (85) (buggy when using text-transform : issue 3409) |
Old one-colon syntax (:first-line ) |
1.0 (buggy when using text-transform : issue 129669) |
{{ CompatGeckoDesktop("1") }} | 5.5 | 3.5 | 1.0 (85) (buggy when using text-transform : issue 3409) |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | {{ CompatUnknown() }} | {{ CompatGeckoMobile("1") }} | {{ CompatNo() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} |
Old one-colon syntax (:first-line ) |
{{ CompatUnknown() }} | {{ CompatGeckoMobile("1") }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} |