RTL 支持

AdminLTE 在标准的 LTR(从左到右)样式表之外,还附带了一个 RTL(从右到左)样式表,通过 rtlcss 从同一源码生成。用于阿拉伯语、希伯来语、波斯语、乌尔都语以及任何其他从右到左书写的语言。

预构建的 RTL 样式表

每个版本都会发布所有 CSS 文件的 RTL 变体:

dist/css/adminlte.css           ← LTR (默认)
dist/css/adminlte.rtl.css       ← RTL
dist/css/adminlte.min.css
dist/css/adminlte.rtl.min.css

要将页面切换为 RTL,请替换样式表并在 <html> 元素上设置 dir="rtl"

<html lang="ar" dir="rtl">
  <head>
    <link rel="stylesheet" href="dist/css/adminlte.rtl.min.css" />
  </head>
  <body class="layout-fixed sidebar-expand-lg bg-body-tertiary">
    <!-- ...与 LTR 相同的标记 -->
  </body>
</html>

就这么简单——侧边栏现在靠右停靠,滚动条翻转,内边距/外边距工具类镜像,Bootstrap Icons 保持 LTR 安全(大多数图标没有方向性)。使用示例,请参见 layout/layout-rtl.html

Bootstrap 的 dir="rtl" 属性

设置 dir="rtl" 也会触发 Bootstrap 5.3 的逻辑属性路径——.ms-* 变为右边距而非左边距,.float-start 变为右浮动等等。您不需要为 RTL 单独使用不同的 Bootstrap 类;相同的工具类名称在两种方向下都有效。

当您有混合语言 UI 时

如果您的应用在 LTR 页面中显示 RTL 内容(例如英文管理面板中的阿拉伯语文本块),您可以将 dir="rtl" 限定在单个元素上:

<body>
  <!-- LTR 应用外壳 -->
  <main dir="rtl" lang="ar">
    <!-- 此区块仅支持从右到左(RTL) -->
  </main>
</body>

Bootstrap 和 AdminLTE 能正确处理嵌套的方向切换——内部元素的方向优先。

自行构建 RTL

如果您从源码构建 AdminLTE 并修改了 SCSS,请重新生成 RTL CSS:

npm run css-compile     # 构建 LTR
npm run css-prefix      # 添加自动添加浏览器前缀
npm run css-rtl         # 从 LTR 输出生成 *.rtl.css 文件
npm run css-minify

完整流程已集成到 npm run css 中,因此大多数情况下您只需运行该命令即可。

转换由运行 rtlcsspostcss 处理——两者都已在 devDependencies 中。如果您需要让某个特定规则不参与 LTR 到 RTL 的翻转,请在 SCSS 中使用 rtlcss 控制指令:

.brand-link {
  /*rtl:ignore*/
  margin-left: .5rem;   // 在左对齐和右对齐中都保持左缩进
}
自动翻转的内容
方向感知属性 RTL 中的行为
margin-left / padding-left 交换为右侧
left, right positioning 交换
text-align: left / right 交换
Bootstrap .ms-*.me-*.float-start.float-end 通过 Bootstrap 的逻辑属性镜像
transform: translateX() 符号反转
侧边栏位置 靠右停靠
下拉菜单展开方向 自动翻转(由 Bootstrap 处理)
不翻转的内容
  • Bootstrap Icons(SVG 字形)——大多数图标是方向中性的;确实指示方向的箭头(bi-arrow-rightbi-chevron-right 等)需要手动替换为对应的 -left 版本。
  • 内联图片、图表和第三方小部件——它们的内部布局不会对 dir 做出响应。请检查每个集成(ApexCharts、FullCalendar、Tabulator)是否有 RTL 选项。
  • 数字——即使在 RTL 上下文中,数字仍然保持 LTR(这是标准的 Unicode 双向文本行为,不是 Bug)。
常见问题
  • 压缩后的 RTL 构建文件是 .rtl.min.css,而不是 .min.rtl.css 文件名顺序很重要;构建脚本生成的是前者。
  • 不要在同一页面上混合使用 LTR 和 RTL 样式表 —— 选择其一。如果您需要混合方向的应用,请在相关的子树上使用 dir="rtl",而不是使用单独的样式表。
  • 图标镜像:当您为 RTL 替换图标时,如果它指示方向,也要更新其 aria-label(例如 “Next page” 仍应显示为 “Next page” —— 只有字形发生变化)。