--- 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。

语法

{{csssyntax}}

示例

text-transform

将每个段落中的第一行字母转换成大写

HTML

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore.</p>

CSS

p::first-line { text-transform: uppercase }

输出

{{ EmbedLiveSample('text-transform', 250, 100) }}

margin-left

margin-left 在 first-line 伪元素上无效

HTML

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore.</p>

CSS

p::first-line { margin-left: 20px }

输出

{{ EmbedLiveSample('margin-left', 250, 100) }}

text-indent

text-indent 在 first-line 伪元素上无效

HTML

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore.</p>

CSS

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() }}

参见