::first-line伪元素仅作用于块级元素的视觉首行,支持颜色、字体、行高等文本属性,不支持盒模型属性;需避免font-size:0等干扰排版的设置,并可与::first-letter配合实现首行+首字复合样式。

用 ::first-line 伪元素可以单独设置段落首行的样式,比如首行缩进、变色、加粗或换字体,但要注意它只对块级元素(如 p、div)生效,且仅作用于视觉上的“第一行”,受容器宽度和字体大小影响。
确保元素是块级并支持::first-line
::first-line 不适用于内联元素(如 span)或被设置为 display: inline 的元素。常见可用标签包括 p、div、h1–h6 等默认块级元素。
- 避免对
span或a直接使用 —— 即使加了display: block,部分浏览器也可能不触发 - 如果父容器设了
font-size: 0或line-height: 0,可能导致首行计算异常,建议保持正常排版流
首行样式只影响“实际显示的第一行”
首行不是按字符数或换行符判定,而是由当前容器宽度、字号、字间距等渲染后的真实折行位置决定。同一段文字在不同屏幕宽度下,::first-line 可能覆盖不同数量的字。
- 例如:容器变窄时,原本两行的内容可能变成三行,但只有最上面那行受
::first-line影响 - 手动插入
不会改变首行范围 —— 伪元素仍以 CSS 渲染后的首行为准 - 不支持设置
margin、padding、height、width等盒模型属性(仅支持部分文本相关属性)
常用可设置的样式属性
::first-line 支持的样式有限,聚焦于文本表现,包括:
立即学习“前端免费学习笔记(深入)”;
-
颜色类:
color、background-color -
字体类:
font-family、font-size、font-weight、font-style、letter-spacing -
行高与对齐:
line-height、text-transform、text-decoration - 注意:
text-indent对首行无效 —— 它属于整个段落,需写在p规则里
配合:first-letter实现更精细控制
如果既要首行特殊,又要首字放大下沉(如古籍排版),可组合使用 ::first-line 和 ::first-letter:
p {
font-size: 16px;
text-indent: 2em;
}
p::first-line {
color: #555;
font-weight: bold;
}
p::first-letter {
font-size: 24px;
float: left;
line-height: 1;
margin-right: 4px;
}
注意:两者可共存,但 ::first-letter 的样式会覆盖 ::first-line 中重叠的部分(如 font-size)。










