【问题标题】:While importing scss file into parent class css not working properly将 scss 文件导入父类 css 时无法正常工作
【发布时间】:2020-11-30 20:24:15
【问题描述】:

下面是我的scss文件

.mat {
@import "ej2-base/styles/material.scss";
@import "ej2-buttons/styles/material.scss";
@import "ej2-popups/styles/material.scss";
@import "ej2-splitbuttons/styles/material.scss";
}
.boot{
    @import "ej2-base/styles/bootstrap.scss";
    @import "ej2-buttons/styles/bootstrap.scss";
    @import "ej2-popups/styles/bootstrap.scss";
    @import "ej2-splitbuttons/styles/bootstrap.scss";
}

在这里,我想在将类更改为 body 时加载材质主题。但是没有添加样式

这里我附上了我的样品 scsssIssue.zip

回购步骤

  • 下载以上示例

  • npm i命令然后ng serve

  • 你会在浏览器中看到按钮

  • 然后单击click me 按钮 - 不会添加样式'

如果你像下面这样修改 scss

@import "ej2-base/styles/material.scss";
@import "ej2-buttons/styles/material.scss";
@import "ej2-popups/styles/material.scss";
@import "ej2-splitbuttons/styles/material.scss";

样式已正确添加。

参考:https://github.com/sass/sass/issues/2888

【问题讨论】:

    标签: angular sass angular-cli-v9


    【解决方案1】:

    这不是 Angular 或 sass 的问题,而是您正在使用的组件库的问题。由于他们使用大量 #{&} 来确定范围,因此您的根选择器(例如 .mat)将被重复使用/复制并创建如下规则:

    .mat .mat.e-btn { }
    

    注意第二个.mat,它是由他们的#{&}.e-btn 选择器创建的。

    【讨论】:

    • 嗨@naeramarth7,我是sass的新手。请你再清楚一点。我是否必须更改我的 scss 文件语法中的任何内容......提前谢谢
    • 嘿@kumaresan_sd,问题不在你这边——从我的角度来看,没有简单的方法可以解决这个问题。这是ej2 不允许通过使用父选择器 的方式进行嵌套导入的问题。一些库带有一个 mixin 来设置样式,但 ej2 似乎没有这样做 - 你最好的选择可能是在 ej2 寻求帮助。
    • 嗨@naeramarth,非常感谢您验证我的问题。其实我来自ej2。我只是想找到一些方法来解决这个问题我的意思是语法变化。提前致谢
    • 在库中为顶级选择器添加前缀 #{&} 真的有原因吗?
    • 非常感谢您的建议,而 #{&} 删除它会生成正确的 css 和主题应用正常
    猜你喜欢
    • 2018-02-14
    • 2014-08-10
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多