Sass - 为从文件导入的所有类添加前缀(使用 sass 导入或 webpack 加载器)

Posted

技术标签:

【中文标题】Sass - 为从文件导入的所有类添加前缀(使用 sass 导入或 webpack 加载器)【英文标题】:Sass - Prefix all classes imported from file (with sass import or webpack loader) 【发布时间】:2016-10-18 12:37:51 【问题描述】:

这个问题可能非常愚蠢和重复,但我找不到解决问题的有效方法。如果这已经在其他地方得到回答,我很抱歉。

我想做的是在一个项目中使用 2 个 css 框架。

我必须使用语义作为我的主要 CSS 框架 - 这必须是全局可访问的。例如,具有“ui grid”类的元素应该使用语义UI的“ui grid”行为。

但是,我想使用 Bulma 作为我的辅助框架。为避免冲突,我想为所有 Bulma 类添加一个静态前缀。因此,例如 Bulma 的“modal”类将作为“bulma-modal”访问。 像这样:

  .&bulma 
    @import '~bulma/bulma';
  

这将(希望)避免所有类冲突,并且仍然让我在同一范围内同时使用语义和 Bulma。

感谢您的任何帮助或建议。

【问题讨论】:

【参考方案1】:

你可能会对这个框架感兴趣https://github.com/Glidias/v-namespace

结合使用 sass:meta 从节点模块中导入样式表,使其可以嵌套在选择器层次结构中。

@use "sass:meta";
.bulma 
    @include meta.load-css("../node_modules/bulma/sass/helpers/flexbox.sass");

【讨论】:

这和做的不是一回事吗:.bulma @import '../node_modules/bulma/sass/helpers/flexbox.sass'; ?【参考方案2】:
.prefix- 
    &btn 

    
    &nav 

    

.prefix-btn 
.prefix-nav 

【讨论】:

见“Explaining entirely code-based answers”。虽然这在技术上可能是正确的,但它并不能解释为什么它可以解决问题或应该是选择的答案。除了帮助解决问题,我们还应该进行教育。【参考方案3】:

在你的 bulma scss 文件中尝试这样的操作

$my-name: mycss--;

.#$my-namebtn 
  ...


.#$my-nameinput 
  ...


.#$my-nameheader 
  ...

【讨论】:

感谢您的回答。但我显然不能在这样的 css 框架中使用所有类的前缀。工作量很大。

以上是关于Sass - 为从文件导入的所有类添加前缀(使用 sass 导入或 webpack 加载器)的主要内容,如果未能解决你的问题,请参考以下文章

将 sass/css 文件导入所有 Angular 组件

为啥 tailwindcss 没有在 webpack 中使用 sass 文件正确导入所有组件?

如何在Nuxt项目中使用.vue文件做自动前缀处理?

带有 node-sass 和 autoprefixer 的 npm

无需编译的 Sass 导入

为所有从包路由导入的前缀添加前缀时,如何在 Symfony 包的模板中生成 URL?