Sass 无法@extend 使用父选择器创建的选择器
Sass fails to @extend selectors created with the parent selector
我需要创建 CSS 以某种方式使用 SCSS 和占位符完成的输出
这是我想要的输出
.myclass {
color: silver;
}
.myclass-gold {
color: gold;
}
当我用这样的 SCSS placeholder 尝试时
%placeholder {
color: silver;
#{&}-gold {
color: gold;
}
}
.myclass {
@extend %placeholder !optional;
}
我只得到这个结果
.myclass {
color: silver;
}
黄金部分全部掉落
我需要一个占位符,因为我使用了很多选择器,例如 a.myclass
、input.myclass
等,并且不希望从这些
中展开 @export
如果我不使用占位符而是使用随机选择器——并使用一些 extry 字节——输出也不正确,
ae739ab7 {
color: silver;
#{&}-gold {
color: gold;
}
}
.myclass {
@extend ae739ab7 !optional;
}
产量
ae739ab7, .myclass {
color: silver;
}
ae739ab7 ae739ab7-gold, .myclass ae739ab7-gold {
color: gold;
}
和
ae739ab7 {
color: silver;
&-gold {
color: gold;
}
}
.myclass {
@extend ae739ab7 !optional;
}
给我
ae739ab7, .myclass {
color: silver;
}
ae739ab7-gold {
color: gold;
}
这里缺少的始终是选择器 .myclass-gold
这是否可以通过一些魔术来实现?
扩展仅适用于完全匹配。当你这样写时:
%placeholder {
color: silver;
#{&}-gold {
color: gold;
}
}
你真正创造的是这样的:
%placeholder {
color: silver;
}
%placeholder %placeholder-gold {
color: gold;
}
所以当你这样写的时候:
.myclass {
@extend %placeholder !optional;
}
它只会扩展 %placeholder
选择器而不是 %placeholder-gold
选择器。要获得您正在寻找的行为,您必须单独扩展每个占位符选择器:
%placeholder {
color: silver;
@at-root #{&}-gold {
color: gold;
}
}
@mixin placeholder {
& {
@extend %placeholder;
@at-root #{&}-gold {
@extend %placeholder-gold;
}
}
}
.myclass {
@include placeholder;
}
输出:
.myclass {
color: silver;
}
.myclass-gold {
color: gold;
}
我需要创建 CSS 以某种方式使用 SCSS 和占位符完成的输出
这是我想要的输出
.myclass {
color: silver;
}
.myclass-gold {
color: gold;
}
当我用这样的 SCSS placeholder 尝试时
%placeholder {
color: silver;
#{&}-gold {
color: gold;
}
}
.myclass {
@extend %placeholder !optional;
}
我只得到这个结果
.myclass {
color: silver;
}
黄金部分全部掉落
我需要一个占位符,因为我使用了很多选择器,例如 a.myclass
、input.myclass
等,并且不希望从这些
如果我不使用占位符而是使用随机选择器——并使用一些 extry 字节——输出也不正确,
ae739ab7 {
color: silver;
#{&}-gold {
color: gold;
}
}
.myclass {
@extend ae739ab7 !optional;
}
产量
ae739ab7, .myclass {
color: silver;
}
ae739ab7 ae739ab7-gold, .myclass ae739ab7-gold {
color: gold;
}
和
ae739ab7 {
color: silver;
&-gold {
color: gold;
}
}
.myclass {
@extend ae739ab7 !optional;
}
给我
ae739ab7, .myclass {
color: silver;
}
ae739ab7-gold {
color: gold;
}
这里缺少的始终是选择器 .myclass-gold
这是否可以通过一些魔术来实现?
扩展仅适用于完全匹配。当你这样写时:
%placeholder {
color: silver;
#{&}-gold {
color: gold;
}
}
你真正创造的是这样的:
%placeholder {
color: silver;
}
%placeholder %placeholder-gold {
color: gold;
}
所以当你这样写的时候:
.myclass {
@extend %placeholder !optional;
}
它只会扩展 %placeholder
选择器而不是 %placeholder-gold
选择器。要获得您正在寻找的行为,您必须单独扩展每个占位符选择器:
%placeholder {
color: silver;
@at-root #{&}-gold {
color: gold;
}
}
@mixin placeholder {
& {
@extend %placeholder;
@at-root #{&}-gold {
@extend %placeholder-gold;
}
}
}
.myclass {
@include placeholder;
}
输出:
.myclass {
color: silver;
}
.myclass-gold {
color: gold;
}