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 中,因此大多数情况下您只需运行该命令即可。
转换由运行 rtlcss 的
postcss 处理——两者都已在
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-right、bi-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” —— 只有字形发生变化)。