Badge圆点化的关键是将border-radius设为50%并强制width=height,同时清除padding、设font-size: 0、加display: inline-block(Bootstrap 5.2+必需),否则仅改圆角会因默认内边距和行内特性导致椭圆变形。
Bootstrap的.badge默认是带圆角的矩形,想变成纯圆点,核心不是换组件,而是重置border-radius并控制宽高比。默认border-radius: 0.375rem在小尺寸下仍显方正,必须强制设为50%,同时保证width和height相等——否则哪怕border-radius: 50%也会拉成椭圆。
<span class="badge bg-primary" style="width: 12px; height: 12px; border-radius: 50%; padding: 0;"></span>
.badge-dot { width: 10px; height: 10px; border-radius: 50%; padding: 0; font-size: 0;}
font-size: 0——否则文字撑开高度,破坏圆形;若需显示数字,改用line-height: 10px并居中只加border-radius: 50%却没设等宽高等于白做。Bootstrap的.badge默认有padding: 0.375em 0.75em,左右内边距远大于上下,导致宽度天然大于高度。不重置padding和width/height,border-radius: 50%只会产出一个横向拉伸的椭圆。
padding(或设为0),否则圆点边缘会虚化或变形min-width——它会干扰等宽高约束em单位,务必确认父元素font-size稳定,否则圆点大小飘忽Bootstrap 5.2+ 的.badge已移除display: inline-block,默认是inline,这会导致width/height失效。必须显式加display: inline-block或display: block才能生效。
display: inline-block
display,但加上更稳妥.badge-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; padding: 0; font-size: 0;}
圆点Badge常用于状态标记(如在线/离线),但很多人忽略垂直对齐和颜色继承问题。默认vertical-align: baseline会让圆点贴着文字底部,看起来像挂件而不是内嵌指示器。
vertical-align: middle让圆点与文字中线对齐bg-*<code>类叠加——它会覆盖你自定义的<code>width/height,直接用background-color
vw单位,改用clamp(6px, 2vmin, 10px)更可控