bootstrap 的 reboot.css 默认清除 ul/ol 的 list-style 是设计选择,旨在为组件提供干净样式起点;需通过自定义类如 .list-disc { list-style-type: disc !important; } 并补足 padding-left 才能安全恢复可见圆点。

Bootstrap 的 reboot.css 默认清空所有 ul/ol 的 list-style
不是 bug,是设计选择。Bootstrap 4+ 在 reboot.css 中对所有 ul 和 ol 显式设置了 list-style: none,目的是抹除浏览器原生符号,为导航、卡片、列表组等组件提供干净的样式起点。
这意味着:哪怕你什么 Bootstrap 类都没加,只要引入了完整 CSS,<ul><li>item</li></ul> 就默认没圆点——不是“丢了”,是被主动关掉了。
- 该规则优先级高,位于样式表靠前位置,容易覆盖你后写的普通
ul { list-style: disc; } - 它只作用于直接子
<ul></ul>和<ol></ol>,不会穿透到嵌套的ul ul,所以子列表可能意外显示圆点 -
list-unstyled类只是重复执行一遍list-style: none,删掉它 ≠ 恢复原样
为什么加了 list-style-type: none 还有圆点?
常见错因不是属性写错,而是作用对象错了:list-style-type 必须设在 <ul></ul> 或 <ol></ol> 上才生效,写在 <li> 上完全无效。
另外,如果项目用了通配符重置(比如 * { padding: 0; }),<ul></ul> 的 padding-left 被清零,圆点虽存在但被挤出可视区——此时开发者工具里 list-style-type 显示为 disc,但符号不可见。
- 检查「Computed」面板中
padding-left是否为0px;是的话,补上ul, ol { padding-left: 2rem; }即可恢复可见性 - 若用了
display: flex或display: grid改写了<li>的 display 值,list-style会自动失效(因脱离列表渲染流) - 第三方 UI 库或自定义组件可能用
::before伪元素画圆点,此时list-style-type完全不相关
如何安全恢复原生圆点而不破坏布局?
别全局覆盖 Bootstrap 的重置规则。最稳妥的方式是针对性加回,并控制作用域:
- 用自定义 class,例如
<ul class="list-disc"></ul>,再写.list-disc { list-style-type: disc !important; }——!important是必要的,否则干不过reboot.css - Bootstrap 5.3+ 提供了
list-style-type-disc等工具类,但需确认构建版启用了 utilities/api.json 中的 list-style 模块 - 若只需视觉圆点、不要语义列表,可用
<div class="d-flex flex-column"> + <code>::before模拟,但会丢失屏幕阅读器对列表结构的识别真正容易被忽略的是:恢复圆点的同时,必须同步确认
padding-left是否足够——没有这块“画布”,disc再正确也白搭。











