letter-spacing专控字间距,line-height专控行间距;中文慎用justify和负letter-spacing;推荐em单位、无单位line-height及text-align:left。

letter-spacing 控制字间距,别用 margin 或 padding
字间距不是靠给文字加 margin 或 padding 实现的——那会破坏行内布局、触发重排,还可能让点击区域错位。真正该用的是 letter-spacing CSS 属性,它专为字符间空隙设计,不影响盒模型。
常见错误是把中文当成英文处理:中文默认不需要大间距,letter-spacing: 2px 容易导致字与字“断开”,阅读吃力;而英文标题偶尔需要微调(如 letter-spacing: 0.1em),但超过 0.2em 就容易识别困难。
-
letter-spacing支持px、em、rem,推荐用em保证缩放一致性 - 设为负值(如
letter-spacing: -0.02em)可收紧字距,但中文慎用,易粘连 - 继承自父元素,若只想影响某段文字,需显式重置(如
letter-spacing: normal)
line-height 设置行间距,不是 height 或 padding
行间距本质是行框(line box)高度,由 line-height 决定,不是靠给 <p> 设 height 或上下 padding 模拟——那样会让多行文本溢出或挤压,且无法响应字体大小变化。
关键理解:line-height 的数值如果是无单位数字(如 1.6),它是相对于当前字体大小的倍数,安全、可继承;如果写 px(如 line-height: 24px),则固定死高度,字体变大时行距不会跟着变,极易重叠。
立即学习“前端免费学习笔记(深入)”;
- 正文推荐
line-height: 1.5~1.7,兼顾可读性与紧凑感 - 标题可略小(如
line-height: 1.2),避免空荡 - 设为
normal时浏览器按字体内置度量计算,结果不可控,不建议用于精确排版
中文网页慎用 text-align: justify
很多人想“对齐两端”来提升美观,但 text-align: justify 在中文里效果极差:浏览器缺乏成熟算法,常导致字间距拉得过大、出现难看的“河流”(大块空白),甚至把标点挤到行首行尾。
除非用专门的排版库(如 justified-layout)或服务端预处理,否则纯 CSS 的 justify 对中文基本等于放弃控制权。
- 替代方案:老老实实用
text-align: left,靠合理line-height和段落间距提升节奏感 - 若必须两端对齐,至少配合
hyphens: auto(仅现代浏览器支持)和word-break: break-word缓解断裂 - 移动端尤其要禁用,小屏幕下
justify拉伸更失控
font-feature-settings 影响字距感知,但兼容性有限
某些字体(如思源黑体、Noto Sans CJK)内置了字距调整特性(kerning),可通过 font-feature-settings 开启,比如 font-feature-settings: "kern"。这不改变 letter-spacing 值,但会让相邻字形自动微调距离,观感更自然。
问题在于:这个属性在 Safari 旧版本、IE 全系不支持,且依赖字体本身是否提供对应特性表。盲目开启可能无效,甚至引发渲染异常。
- 先确认字体支持:用
@font-face加载时检查 font-display 和特性声明 - 稳妥写法是叠加使用:
letter-spacing: 0.01em; font-feature-settings: "kern" 1; - 不要用它替代基础
letter-spacing或line-height,它只是锦上添花
letter-spacing 和 line-height 是骨架,其余都是修饰。调完这两个,再看是否真需要 justify 或 kern —— 大多数项目,到这一步已经够用了。



















