查找引导程序5代码时,我在bootstrap/scss/mixins/_forms.scss文件上看到以下声明:
@mixin form-validation-state-selector($state) {
@if ($state == "valid" or $state == "invalid") {
.was-validated #{if(&, "&", "")}:#{$state},
#{if(&, "&", "")}.is-#{$state} {
@content;
}
} @else {
#{if(&, "&", "")}.is-#{$state} {
@content;
}
}
}无法准确理解&变量在#{if(&, "&", "")}语句中的用法。它是怎么工作的?
我知道在写缩进层次结构时,使用)性格 ( os SASS )来包含父选择器。但我猜不出它是如何在@mixin内部的上述语句上使用的,当引用出来时,"。有人能解释一下吗?
提前感谢!
发布于 2022-11-22 21:34:30
发布于 2022-11-22 21:26:50
这种语法的原因是,这是与dartsass的某种解析/兼容性问题。这些年来,SASS有很多不同的CLI工具来生成代码,在谈到错误时,也有不同程度的严格性。
看来这是为了防止一个问题。也就是说,您不应该在根级别使用& (在编译时没有根根--可能是NullPointer或其他什么),因为这将产生下面屏幕快照中看到的错误:

原因可以在您链接的代码上面的注释中找到:https://github.com/sass/sass/issues/1873#issuecomment-152293725
添加规则后,错误将消失:

使用的解析器:https://www.sassmeister.com/
https://stackoverflow.com/questions/74538812
复制相似问题