CSS letter-spacing 属性详解:掌控字符之间的呼吸感

在排版世界里,字距letter-spacing )​ 往往是最容易被忽略、却最能影响阅读质感的一环。太紧,字挤在一起喘不过气;太松,单词又散成一地芝麻。今天聊聊 CSS 里的 letter-spacing,看看怎么用它给文字调出合适的"呼吸感"。

📌 什么是 letter-spacing

letter-spacing用来增加或减少字符之间的空白字符间距),作用在元素内的每一个字符上。

css 复制代码
selector {
  letter-spacing: <length> | normal;
}
  • 正值 → 字符间距变大,文字"舒展"
  • 负值 → 字符间距变小,文字"收紧"
  • normal​ → 使用当前字体默认的间距(不是 0!这点很关键)

💡 normal0的区别:normal会让用户代理保留字体本身的默认字距,且浏览器不会 在此基础上为了"两端对齐"再去额外拉伸或压缩字符间距;而 letter-spacing: 0是你显式把额外间距锁成了 0,行为上略有差异。

🎯 取值与表现

取值 说明
normal 字体默认间距,由字体文件本身决定
<length>(正值) 在默认基础上再加 这么多间距,如 1px0.1em
<length>(负值) 在默认基础上缩减 间距,如 -0.5px

负值理论上允许,但各浏览器实现有下限(不会让你无限缩到字叠字烂掉)。

⚠️ 一个容易踩的坑:太大或太小都会毁掉可读性

MDN 说得很直白:

一个很大的正或负 letter-spacing值,会让被应用的单词变得不可读。

------ 正值太大,字母散得像一盘沙;负值太大,字母叠成一团糊。

而且没有"万能安全值"------不同字族(衬线 / 无衬线 / 等宽)字符宽度差异很大,可读性必须 case by case 调。比如:

  • 中文正文:0normal就够,很少动
  • 英文大标题:给 0.05em ~ 0.1em常常更显精致
  • 极细字体:可能要稍微加一点正间距
  • 极粗黑体做大字标语:偶尔用一点点负值能"收口"

🧪 实战案例

css 复制代码
<style>
  .box {
    width: 500px;
    height: 200px;
    background-color: red;
    color: #fff;
  }

  .loose {
    letter-spacing: 3px;   /* 正值:字符间距变大 */
  }

  .tight {
    letter-spacing: -2px;  /* 负值:字符间距变小 */
  }
</style>
html 复制代码
<div class="box loose">
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum ducimus...
</div>

<div class="box tight">
  Lorem ipsum dolor sit amet consectetur adipisicing elit. Harum ducimus...
</div>

对比一下就能直观感受到:同样的字,换一个 letter-spacing气质完全不一样

✨ 几个实用小建议

  1. 单位优先用 em而非 px ------ 字号变化时字距能跟着缩放,响应式更稳
  2. 标题可松,正文别动 ------ 正文强行改 letter-spacing 很容易破坏阅读节奏
  3. 配合 text-align: justify时要小心 ------ letter-spacing的值不会被 UA 再额外拉伸来做对齐(这正是 normal0的另一个差异点)
  4. 中英混排时,建议以小字号正文为准,别为了"看起来酷"在大段正文里上 ± 大值

letter-spacing是个小属性,但用好了,排版质感立刻上一个台阶。下次做 Landing Page 的大标题时,不妨试着 +0.05em,说不定就是那一口"对了"的味道。

读者互动:

  • 如果你觉得文章有待改进,请在评论区留言,我会认真考虑每一条建议。
  • 如果觉得文章有帮助,欢迎点赞鼓励
  • 想与我共同进步,欢迎关注我

💬 感谢各位读者的支持与关注!期待与大家一起在前端开发的道路上共同进步!🎉

相关推荐
大尚来也1 小时前
React Hooks全解析:告别繁琐Class组件
前端·react.js·前端框架
不简说1 小时前
JS 代码技巧 vol.2 — 20 个数组/对象/字符串/正则的实用技巧
前端·javascript·面试
小小编程路2 小时前
C++ 块作用域详解:从基础到实战
前端·javascript·vue.js
虚惊一场2 小时前
MarkView:纯前端 Markdown 实时预览工具的架构设计
前端·javascript·vue.js
hunterandroid2 小时前
[鸿蒙从零到一] ArkUI 常用布局实战:Column、Row、Stack 与 Flex
前端
海上彼尚2 小时前
Nodejs也能写Agent - 17.LangGraph篇 - Checkpointer 与 Memory
前端·javascript·人工智能·langchain·node.js
盛夏绽放2 小时前
Hermes Agent 全栈安装、配置与Web端架构深度解析(官方命令版·最终优化)
前端·架构·hermes
早期的虫儿有鸟吃2 小时前
Vue3
前端·javascript·vue.js
hqk3 小时前
我给 AI 造了一个原型工具:AIWireframeViewer V1
前端·ai编程·vibecoding