letter-spacing用于调整字符间光学间距,不影响盒模型和换行;适用场景包括英文标题收紧、中文字体可读性微调、修复小字号粘连;不可用margin/padding替代,禁用空格模拟,中文常用-0.5px~1px,英文大写可用2px或0.1em。

letter-spacing 是控制文字间空白宽度的 CSS 属性,直接作用于文本渲染层,不是“加空格”,而是拉伸或压缩字符之间的默认间距。
什么时候该用 letter-spacing 而不是 margin 或 padding
它只影响字符间的光学间距,不改变盒模型尺寸,也不影响换行逻辑。比如给英文标题做视觉收紧、中文字体微调可读性、或修复某些字体在小字号下粘连的问题——这些场景下改 margin 完全无效,因为那是元素外边距,跟字形无关。
- 需要统一调整一整段文字的疏密感 → 用
letter-spacing - 只想让某几个字更开一点 → 用
span包裹后单独设letter-spacing - 想靠“加空格”模拟字间距 → 别这么干,语义错、响应差、复制粘贴乱码
letter-spacing 的值怎么写才靠谱
支持 px、em、rem 和无单位数值(如 0.1),但含义不同:无单位值是相对于当前字体大小的倍数,比如 font-size: 16px 时设 letter-spacing: 0.1 ≈ 1.6px;而 letter-spacing: 0.1px 就是固定 0.1 像素,可能被浏览器舍入掉。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
- 中文排版常用范围:-0.5px ~ 1px(负值慎用,容易挤成一团)
- 英文大写标题可设
letter-spacing: 2px或0.1em增强识别度 - 设
letter-spacing: normal等价于0,但语义更清晰,推荐重置时用 - 不要设极大值(如
50px),会导致文本溢出容器且无法自动换行
为什么有时设了 letter-spacing 没反应
常见原因不是语法错,而是被其他样式覆盖或触发了渲染限制:
立即学习“前端免费学习笔记(深入)”;
- 父元素设置了
white-space: nowrap,又没给足够宽容器 → 字符被强制撑出视口,看起来像“没变” - 用了 Web Font 但字体文件本身字距异常(比如某些免费中文字体默认 kerning 关闭)→
letter-spacing只能微调,救不了根本缺陷 - CSS 优先级低,被后面同选择器的规则覆盖 → 用浏览器开发者工具检查 computed 样式,看
letter-spacing是否真的生效 - 在
input或textarea上设了但无效 → 这些表单控件对letter-spacing支持不稳定,尤其旧版 Safari,建议避免
真正难调的是中英文混排场景:同一个 letter-spacing 值对汉字和拉丁字母的视觉影响差异很大,往往得拆开用 :lang(en) 或 span.lang-en 单独控制。这点很容易被忽略,直到设计稿验收时才发现英文太松、中文太紧。


















