假设我们有一个主css层。在这个层中,我们使用一个scss变量。当变量在同一层块中定义时,一切都很完美。但是当我们试图在另一个相同的层块中定义变量时。下面是我们的示例代码:
@layer main, overrides;
@layer main {
$someColor: orange;
}
@layer overrides {
$someColor: red;
}
@layer main {
// $someColor: orange;
h1 {
color: $someColor;
}
}
字符串
这样做会导致Undefined variable color: $someColor
,sass似乎无法解析变量。
有没有办法做到这一点?
主要目标是通过覆盖scss变量来覆盖来自第三方的css层,比如primeNG,它定义了一个primeng
css层。为此,我们认为我们可以在导入primeNG scss之前导入@layer primeng { ...scss variables here }
中一些被覆盖的变量。
以下是StackBlitz上的复制:https://stackblitz.com/edit/angular-ivy-1thpuw?file=src%2Fstyles.scss
另一个复制试图使用单独的scss文件,以防它会解决这个问题:https://stackblitz.com/edit/angular-ivy-1thpuw?file=src%2Fstyles.scss
在层尝试覆盖变量之前定义变量的最后一次复制:https://stackblitz.com/edit/angular-ivy-bsvzt8?file=src%2Fstyles.scss
1条答案
按热度按时间vbkedwbf1#
因此,您可以创建一个主层,其中包含所有变量覆盖,然后您可以导入作用域CSS,您需要使用import语句在其上应用颜色!
字符串
scss代码:
型
stackblitz
请在下面找到一个注解解释,除非它们是全局的,否则CSS变量只存在于定义的块中,因为变量(
$someColor
)不是全局定义,所以你会得到这个错误。使用前:
型
之后:
型