bootstrap 不提供首行缩进类,text-indent 需用原生 css 实现;flex 类控制子元素布局,不作用于文本缩进,且 flex 容器中 text-indent 会失效。

Bootstrap 本身不提供首行缩进类,也不能用 Flex 类实现首行缩进;它只管容器级布局对齐,段落内的文字排版(如 text-indent)得靠原生 CSS。
为什么 flex 类(justify-content / align-items)对首行缩进无效
Flex 布局控制的是子元素之间的相对位置,不是文本内容的内边距或缩进。哪怕你给 <p></p> 加了 d-flex,它也会把内部文字当作一个匿名 flex 项处理,text-indent 失效,且破坏段落语义和换行逻辑。
-
justify-content-start等只影响直接子元素(比如多个<span></span>或按钮),不影响段落内文字 -
text-indent必须作用在块级文本容器上(如<p></p>、<div>),且该容器不能是 flex 容器 <li>若父容器用了 <code>d-flex,又想让子<p></p>支持text-indent,得给<p></p>单独加flex: none或移除其 flex 特性(比如不嵌套在 flex 容器里) - 全局统一:在自定义 CSS 中加
p { text-indent: 2em; },注意避免影响列表项、标题等 - 局部控制:给目标段落加自定义类,比如
<p class="indent-first"></p>,再配 CSS:.indent-first { text-indent: 2em; } - 响应式缩进:用媒体查询,如
@media (min-width: 768px) { .indent-first { text-indent: 1.5em; } } - 慎用
rem或px:中文排版推荐用em(基于当前字体大小),更适配缩放与字体变更 - 文字容器(如
<p></p>)是 Flex 容器的直接子元素 - 父容器有
d-flex,且方向明确(默认flex-direction: row) - 主轴对齐用
justify-content-*,交叉轴用align-items-* - 不要给
<p></p>同时加d-flex和text-indent——前者会让后者失效 - 如果 Flex 容器里只有一个段落,又想它首行缩进+整体居中,得用
text-align: center控制段落内文字居中,再用text-indent缩进首行(此时text-indent仍生效,因段落自身不是 flex 容器) - Bootstrap 5.3+ 的
align-content-evenly等类只影响多行 Flex 行的分布,和段落内文字完全无关,别误用
怎么正确设置首行缩进(text-indent)
直接写 CSS 最可靠,Bootstrap 不封装这个功能。常见做法:
Flex 容器中如何让文字内容对齐(非缩进)
如果你实际想要的是“段落整体在 Flex 容器中居中/右对齐”,而不是首行缩进,那就用 Flex 对齐类,但必须确保:
例如:<div class="d-flex"><p class="mb-0">这段文字会左对齐</p></div>;加 justify-content-center 就整体居中,加 align-items-center 可垂直居中(需父容器有高度)。
容易被忽略的关键点
首行缩进和 Flex 对齐是两套机制,混用时极易冲突:











