正确做法是text-sm-start text-md-center:小屏(≥576px)左对齐,中屏及以上(≥768px)居中;需加在标题标签上并配mb-0消除默认下边距,避免flex布局干扰。

用 text-center 和响应式断点类组合控制对齐
Bootstrap 5 默认不提供“大屏居中、小屏居左”的单一类,得靠断点类叠加实现。核心是利用 text-sm-start(小屏左对齐) + text-md-center(中屏及以上居中),这样在 sm 及以下左对齐,md 起居中。
-
text-sm-start在576px及以下生效(sm是最小断点,start表示左对齐) -
text-md-center在768px及以上生效(覆盖sm的设置) - 别用
text-center单独写,它会全局居中,无法降级 - 如果项目用了 Bootstrap 4,对应类名是
text-sm-left+text-md-center
Card 标题 HTML 结构要写对
标题必须是 <h5></h5> 或其他语义化标题标签,并直接加类,不要套额外 <div>——否则可能被 <code>.card-header 的默认样式干扰对齐。
<div class="card">
<div class="card-header>
<h5 class=" mb-0 text-sm-start text-md-center>我的标题
</div>
<div class="card-body">...</div>
</div>
-
mb-0很关键:Bootstrap 5 给<h5></h5>默认设了margin-bottom: 1rem,会撑开 header 高度,加mb-0消掉 - 类顺序无关紧要,Bootstrap 按断点优先级覆盖,
md总是覆盖sm - 如果标题放在
.card-body里而不是.card-header,也一样适用,但需注意card-body默认有 padding,可能影响视觉居中感
遇到 flex 布局冲突怎么办
有些自定义 CSS 或第三方组件把 .card-header 设为 display: flex,这时 text-* 类会失效——文字对齐由 flex 容器的 justify-content 控制。
- 检查 computed styles,看
.card-header是否有display: flex - 如果是,直接改 flex 属性:
justify-content: center;(大屏)+justify-content: flex-start;(小屏),用媒体查询或响应式类 - 更稳妥的做法:给标题加
flex-grow: 1+text-align: center,再配合断点控制text-align - 避免强行用
!important,先确认是否真被 flex 干扰
为什么不用 text-lg-center 或更高断点
因为“大屏”在实际业务中通常指平板横屏及以上(md = 768px),不是非要等到 lg(992px)才居中。用 md 能更好适配 iPad 等设备,且符合多数设计稿的响应断点约定。
-
lg断点太晚,手机竖屏(375px)、横屏(667px)都还是左对齐,中间缺了一段过渡 - 如果设计明确要求“仅桌面端居中”,才考虑
text-lg-center,但多数场景没必要卡那么死 - 测试时务必在真实设备或 Chrome DevTools 的
Responsive模式下切到768px宽度验证效果
mb-0 和 flex 冲突判断,这两处一错,标题看起来就“偏了”。










