我可以在LESS import中找到并替换吗?



我想在div中嵌套一个css框架,以便提供像这样的作用域命名空间:

.myframework {
  @import url("myframework.css");
}

但是,框架对

和& lt; body>标记,因此上述代码将编译为:
.myframework html { ... }
.myframework body { ... }

这不行。我可以手动更改任何这样的引用,但这样我就必须在每次更新框架时手动执行此操作。是否有一个等效的查找/替换在LESS中,我可以应用到@import语句,像这样:

/* psedudocode */
.myframework {
  str_replace( ( @import url("myframework.css") ), 'html', '.myframework-html';
}

编译为:

.myframework .myframework-html { ... }
我的想法是,我可以这样定义框架的范围:
<html>
  <body>
    No framework styles applied here
    <div class="myframework">
      <div class="myframework-html">
        <div class="myframework-body">
          Framework styles are applied here
        </div>
      </div>
    </div>
  </body>
</html>

另外,我可能会使用一些正则表达式来确保只有html和body TAGS受到影响,而不是类名、url()路径等。

虽然不是在LESS中,但这可能是一个更好的解决方案:https://www.npmjs.com/package/grunt-css-selectors

这个grunt插件将在所有css选择器中添加前缀。foo,但是html/body选择器将被替换为。foo。这样,我就可以从LESS或SASS编译,然后分别运行prefix命令。

最新更新