javascript - 从javascript覆盖有条件的bootstrap css

标签 javascript css reactjs webpack react-bootstrap

我必须在我的应用程序中使用一些从右到左(阿拉伯语/希伯来语)的语言进行国际化。所以我希望能够覆盖一些 Bootstrap 类(如 col),使其向右浮动而不是向左浮动。

我使用 create-react-app (babel/webpack) ,react-bootstrap。

你不能有条件地导入所以我做了一个有条件的要求

if (language.isLanguageLTR()) {
    console.log("REQUIRE RTL CSS");
    require("./rtl.css");
}

当我处于开发模式时它运行良好,但是当我使用 create-react-app 构建我的应用程序时,即使条件设置为 false 也会导入 css 文件。

有没有办法(当然有!)在我使用引导列的任何地方覆盖一些没有内联 css/特定类的 css 类?

我认为 webpack 会在部署模式下加载它,但我不明白为什么,也许有更合适的方法来有条件地覆盖 css。

我的 css 以防你想更好地理解

.App {
  direction: rtl;
}
.col-sm-1 {
  float: right;
}
.col-sm-2 {
  float: right;
}
...

最佳答案

我明白了。当执行条件导入/请求时,webpack 将始终插入文件(以防万一它可能被调用)。当然,当它是一个 css 文件时,它会覆盖所有内容。 我所做的是使用纯 javascript 定义 css(如这个答案:https://stackoverflow.com/a/15494200),它就像一个魅力(至少在 chrome/ie/FF 上)。我觉得它不漂亮,我想将它放在 .css 文件中,但它已经是东西了。

    var style = document.createElement("style");
    style.appendChild(document.createTextNode(""));
    document.head.appendChild(style);

    style.sheet.insertRule(".App { direction:rtl; }", 0);
    style.sheet.insertRule(
        ".col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7,  .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12  {float: right;}",
        1
    );`

关于javascript - 从javascript覆盖有条件的bootstrap css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44586480/

相关文章:

javascript - React Ref 未获取表单中的文本输入字段数据

css - 如何让 div 占据整个屏幕宽度?

javascript - 仅在单行上对齐所有内容

php - 将 Javascript 函数返回给 PHP 变量

javascript - chrome.scripting.executeScript - 意外属性 : 'arguments'

html - 如何让td内容填满整个parent?

css - 弹出的 create_react_app 和构建(生产)css 无法正常工作

reactjs - className 属性是否承担 Reactjs 中 id 属性的角色?

javascript - PHP本地主机和服务器的结果不同

javascript - 阻止浏览器保存 URL