::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:
这是一段需要首字放大的文字
对应 CSS:
.big-first::first-letter {
font-size: 3em;
color: #d32f2f;
}
基本上就这些,不复杂但容易忽略块级前提和空格干扰。