Bootstrap 5.x 不提供 text-spacing 类,因其未定义该类名且 letter-spacing 才是标准 CSS 属性;响应式字间距需通过媒体查询、自定义 SCSS 或内联 style 实现,单位推荐 em,并须匹配 Bootstrap 默认断点。

Bootstrap 5.x 本身不提供 text-spacing 类,也不存在 text-spacing-sm 这类响应式字间距工具类——直接写会完全无效。 真正起作用的是 CSS 的 letter-spacing 属性,而响应式控制必须靠你自己加媒体查询、自定义 SCSS 或内联 style 实现。
为什么 text-spacing 类不起作用?
这不是拼写错误或加载问题,而是 Bootstrap 根本没定义这个类名:text-spacing 不是合法 CSS 属性,浏览器会直接忽略;Bootstrap 的 utility 类体系里也从未包含任何以 text-spacing 开头的类。你看到的所谓“示例”大概率是开发者自己写的扩展,或混淆了其他框架(如 Tailwind)的命名习惯。
-
letter-spacing才是标准属性名,单位推荐用em(随字号缩放),避免px在不同屏幕下失配 - Bootstrap 的
.form-control、.btn等交互组件上硬加letter-spacing容易导致光标偏移、文字溢出,尤其在 Safari 中 - 中英文混排时,负值(如
-0.02em)要慎用——中文几乎不需要负字距,反而会让字紧贴到难以识别
用媒体查询手动控制 letter-spacing
适用于只引入 CDN、无 Sass 编译环境的项目。直接在 <style> 里写断点规则,清晰可控:
@media (max-width: 575.98px) {
.responsive-ls {
letter-spacing: -0.01em;
}
}
@media (min-width: 576px) and (max-width: 767.98px) {
.responsive-ls {
letter-spacing: 0;
}
}
@media (min-width: 768px) {
.responsive-ls {
letter-spacing: 0.03em;
}
}然后在 HTML 中使用:<p class="responsive-ls">这段文字会随屏幕变紧凑或宽松</p>
- 断点数值必须严格匹配 Bootstrap 默认断点(
575.98px、767.98px等),否则类不会生效 - 别把多个
letter-spacing值写进同一个选择器里——CSS 不支持“条件赋值”,只能靠媒体查询分层覆盖 - 如果同时需要响应式字号和字间距,优先用
clamp()控制font-size,再让letter-spacing用em单位跟随缩放
用 Sass 自定义响应式字间距类(推荐给源码用户)
如果你用的是 Bootstrap 源码(SCSS 版),在 _custom.scss 里加这段就能生成带断点的类:
@each $breakpoint, $value in map-get($grid-breakpoints, 'sm') {
@include media-breakpoint-up($breakpoint) {
.ls-#{$breakpoint}-tight { letter-spacing: -0.02em; }
.ls-#{$breakpoint}-normal { letter-spacing: 0; }
.ls-#{$breakpoint}-wide { letter-spacing: 0.05em; }
}
}编译后可用:<h2 class="ls-sm-tight ls-md-normal ls-lg-wide">标题</h2>
-
$grid-breakpoints必须是 Bootstrap 原生变量,不要自己重定义,否则@each循环会失效 - 类名前缀用
ls-(letter-spacing缩写),避免和未来 Bootstrap 官方类冲突 - 不要试图把
ls-sm和ls-lg同时加在一个元素上——它们不会“叠加”,而是最后一条规则胜出
别指望 text-* 类能凑出字间距效果
text-center、text-start 这些只管对齐,和 letter-spacing 完全无关。有人试过 text-lg-justify 想“撑开文字”,但 text-align: justify 只对段落内空格生效,对单行标题或按钮文字毫无作用。
- 两端对齐(
justify)依赖行宽和单词间空格,短文本或中文标题基本无效 -
text-*类没有断点变体支持字间距,强行组合(如text-sm-02)只会被浏览器当无效类忽略 - 真正要协同控制字号、行高、字间距三者响应变化时,utility 类很快失控——这时该退回到 CSS 自定义属性 + 媒体查询的组合方案
最容易被忽略的一点:字间距不是独立存在的视觉参数,它必须和字号、行高、字体族一起调。单独调大 letter-spacing 而不放大字号,小屏下文字会稀疏得难以阅读;反之,大屏下调小字距却不增大字号,又容易糊成一团。实际调整时,永远先看文字块的整体呼吸感,而不是盯着某个 CSS 属性猛改。


















