直接修改 .tooltip-inner 的 font-size 和 line-height 无效,因 tooltip dom 由 popper 动态插入 底部,易被 bootstrap 默认样式覆盖;推荐用 template 注入自定义 class(如 .my-tooltip-lg)并确保保留 .tooltip 和 .tooltip-inner 类名,再通过高权重选择器精准控制样式。

直接改 .tooltip-inner 的 font-size 和 line-height 为什么没效果
因为 Bootstrap Tooltip 的 DOM 是 Popper 动态插入到 底部的,你写的 .tooltip-inner { font-size: 16px; } 很可能被 Bootstrap 自带样式覆盖——尤其当你的 CSS 文件在 bootstrap.min.css 之前加载,或选择器权重不够时。常见现象是:悬停后字体大小纹丝不动,加了 !important 有时才生效,但这只是掩盖了加载顺序和权重问题。
用 template 注入自定义 class 才真正可控
这是修改字体、行高、宽度等样式最可靠的方式,它让你完全掌控 Tooltip 的 HTML 结构,绕开全局样式污染和权重竞争。
- 必须保留
.tooltip和.tooltip-inner这两个类名,否则 Popper 定位逻辑会失效 - 把自定义 class 加在外层容器上,例如:
class="tooltip my-tooltip-lg" - 对应写 CSS:
.my-tooltip-lg .tooltip-inner { font-size: 16px; line-height: 1.5; } - 如果改了
line-height,记得同步调整.tooltip-arrow的margin-top(或margin-bottom),否则小三角会偏移
data-bs-placement 控制显示位置但有隐含限制
data-bs-placement="bottom" 这类属性能指定基础方向,但实际最终位置由 Popper 动态计算——比如目标元素靠近视口底部时,即使设了 bottom,Popper 也可能自动 fallback 到 top 以避免溢出。
- 想强制固定位置?得配合
popperConfig关闭自动调整:popperConfig: { strategy: 'fixed' }(但会失去响应式避让能力) - 移动端长按场景下,
placement可能因 touch 事件干扰而错位,此时需手动调用tooltip.update()强制重定位 - 若用
template自定义结构,又改了.tooltip-inner的padding或max-width,Popper 的定位参考点可能偏移,建议用浏览器开发者工具检查真实渲染节点的transform值
容易被忽略的兼容性细节
Bootstrap 5.2+ 推荐用 CSS 变量统一控制颜色和字体,但 --bs-tooltip-font-size 并不存在——字体大小仍得靠 .tooltip-inner 的 CSS 规则;而 line-height 改动后,.tooltip-arrow 的垂直居中逻辑会失准,这个偏移不是 bug,是 Popper 基于原始尺寸计算的结果。











