::first-letter伪元素可实现首字放大,但仅对块级元素生效,作用于段落首个字母或汉字;行内元素需设display: block/inline-block;注意空格、标签干扰及部分盒模型属性不支持。

直接用 ::first-letter 伪元素就能实现首字放大,但要注意它只对块级元素(如 p、div、h1 等)生效,且仅作用于段落开头的**第一个字母或汉字**(支持中英文),不能用于行内元素(如 span)除非显式设为 display: block 或 inline-block。
确保父元素是块级容器
如果目标文本在 span 或 a 这类行内标签里,::first-letter 默认不触发。解决方法:
- 把文本包进
p、div等块级标签里(推荐) - 或给行内元素加样式:
display: inline-block;或display: block;
基础写法示例
比如让一段文字首字变大加粗:
p.dropcap::first-letter {
font-size: 2.5em;
font-weight: bold;
float: left;
line-height: 0.8;
margin-right: 0.2em;
}
加上 float: left 可实现传统“首字下沉”效果;若只需放大不浮动,去掉 float 和 line-height 调整即可。
立即学习“前端免费学习笔记(深入)”;
注意兼容性与限制
::first-letter 在所有现代浏览器中都支持,但有几点要留心:
- 只作用于**段落开头的第一个字符**,前面有空格、换行或标签(如
)会失效 - 不支持设置
margin-top、padding-bottom等部分盒模型属性(不同浏览器表现略有差异) - 中文标点如《、【、(等也算“字母”,但通常不会被选中——实际以首个可渲染的印刷字符为准
想对特定文本单独控制?加 class 更稳妥
避免影响全文,建议给需要首字放大的段落加专属 class:
这是一段需要首字放大的文字
对应 CSS:
.big-first::first-letter {
font-size: 3em;
color: #d32f2f;
}
基本上就这些,不复杂但容易忽略块级前提和空格干扰。










