我正在使用Bootstrap 5的SCSS。
我包含了从左到右(ltr)的标准样式:@import "~ bootstrap / scss / bootstrap";
问题:如何连接或启用Bootstrap 5 SCSS样式中的rtl
?
根据说明,除了如何通过标准链接连接外,没有清晰的内容,但需要在SCSS中实现。
注:ltr代表从左到右,rtl代表从右到左。
我正在使用Bootstrap 5的SCSS。
我包含了从左到右(ltr)的标准样式:@import "~ bootstrap / scss / bootstrap";
问题:如何连接或启用Bootstrap 5 SCSS样式中的rtl
?
根据说明,除了如何通过标准链接连接外,没有清晰的内容,但需要在SCSS中实现。
注:ltr代表从左到右,rtl代表从右到左。
导入普通的Bootstrap样式表,再使用RTL选择器导入RTL样式表:
@import '~bootstrap/scss/bootstrap';
[dir='rtl'] {
@import '~bootstrap/dist/css/bootstrap-utilities.rtl.min';
}
注意: 如果你导入 bootstrap.rtl.min
,它将覆盖你的颜色变量(因为这是编译后已经处理好了值的 CSS)
注意#2: 我仍然认为这不是 Bootstrap 意图中 RTL 的使用方式。因为现在如果你在 LTR 上的元素上有 me-2
,那么它会在右边有 2 个 margin,但在 RTL 上会同时拥有左边和右边的 margins! 因为 RTL 代码只添加了 RTL,而没有改变 RTL 指令。
理想情况下,我们将拥有一个完整的RTL Bootstrap版本,但是用 SCSS 编写,这将解决我们大部分的问题。我会尽快找到更多信息,并更新此答案。
我发现只导入 utilities
就可以满足我大部分的 RTL 需求。我认为你可以根据需要导入其他文件,但要记住覆盖的问题。
我们可以按照以下步骤使用React Bootstrap 5进行设置。
main.scss
@import "../node_modules/bootstrap/scss/bootstrap-utilities";
../node_modules/bootstrap/dis/css/bootstrap.rtl.css
复制所有样式[dir="rtl"] { paste all style here}
[dir="ltr"] {@import "../node_modules/bootstrap/scss/bootstrap";}
重要信息:我从官方Bootstrap文档中复制了这一部分:
同时支持LTR和RTL
需要在同一页上同时支持LTR和RTL吗?借助RTLCSS字符串映射,这很容易实现。将您的@imports包装在一个类中,并为RTLCSS设置自定义重命名规则:
/* rtl:begin:options: {
"autoRename": true,
"stringMap":[ {
"name": "ltr-rtl",
"priority": 100,
"search": ["ltr"],
"replace": ["rtl"],
"options": {
"scope": "*",
"ignoreCase": false
}
} ]
} */
.ltr {
@import "../node_modules/bootstrap/scss/bootstrap";
}
/*rtl:end:options*/