::first-letter生效需同时满足三条件:段落为块级元素、首字符是纯文本、未被内联标签包裹;常见失效主因是HTML结构含空格、换行、注释或父容器为flex/grid等非块盒。
直接用+就能生效,但必须满足三个硬条件:段落是块级元素、首字符是纯文本、没被内联标签包裹。
为什么
写了却没反应?
最常见原因不是 CSS 写错,而是 HTML 结构“藏了干扰项”:
段落开头有空格、换行符或 HTML 注释(比如
),
就选不到真正的第一个字
—— 首字符被
包着,伪元素失效
父容器设了
或
,
在非块盒里不工作
用了
的
,得先加
才能触发伪元素
必须配哪些 CSS 才算真正“下沉”?
只放大字体只是“变大”,不是“下沉”。要让后续文字环绕并垂直对齐,这三样缺一不可:
—— 触发文本流环绕,这是下沉的底层机制
放大(建议用
或
,别用固定
)
设小(通常
),否则第二行会从原 baseline 起始,看起来像“浮在上面”
示例:
立即学习
“
前端免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
注意:
是为中文微调用的——中文字体 baseline 不统一,
在这里基本无效,靠
手动压位置更可靠。
中文首字下沉容易错位的两个隐藏坑
中文字不像英文字母有稳定 baseline,渲染时上下浮动明显,尤其在不同字体或字号下:
用系统默认字体(如 sans-serif)时,下沉字常“沉不够”,看起来偏高;换成明确指定的中文字体(如
)能提升一致性
响应式场景下,
在手机上可能撑破容器,或导致环绕行数暴增;建议配合媒体查询降级,比如小屏改用
+
真正麻烦的不是怎么写,而是怎么验——每次改完记得用开发者工具检查 computed 样式里
是否被应用、是否被覆盖、是否命中了真实首字符。字体、行高、浮动、margin 四者稍有偏差,视觉上就差一截。
::first-letterfloat: leftp::first-letter文字
::first-letter首字下沉
display: flexdisplay: grid::first-letterdisplay: inlinedisplay: block::first-letterfloat: leftfont-sizeremempxline-height0.7–0.9p::first-letter {
float: left;
font-size: 3.5rem;
line-height: 0.75;
margin-right: 0.2rem;
margin-top: 0.1rem;
}margin-topvertical-alignmargin"PingFang SC", "Microsoft YaHei"3.5rem2.2remline-height: 0.85::first-letter