【发布时间】:2021-06-09 23:06:27
【问题描述】:
我写了这个@mixin 来在一行中设置明暗主题的样式。
@mixin setThemeDynamicCSSRule($property, $light-theme-value, $dark-theme-value) {
#{$property}: #{$light-theme-value};
.dark-mode & {
#{$property}: #{$dark-theme-value}
}
}
body {
@include setThemeDynamicCSSRule(color, black, white);
@include setThemeDynamicCSSRule(background-color, white, black);
@include setThemeDynamicCSSRule(font-size, 16px, 32px);
}
这会返回我:
body {
color: black;
background-color: white;
font-size: 16px;
}
.dark-mode body {
color: white;
}
.dark-mode body {
background-color: black;
}
.dark-mode body {
font-size: 32px;
}
它不断为每个 setThemeDynamicCSSRule() 调用重复 .dark-mode body 选择器。
它仍然可以完成工作,但理想情况下我希望 css 编译为:
body {
color: black;
background-color: white;
font-size: 16px;
}
.dark-mode body {
color: white;
background-color: black;
font-size: 32px;
}
【问题讨论】:
-
可能最好使用这个插件,它将我的最终 CSS 输出解析为我想要的 npmjs.com/package/postcss-combine-duplicated-selectors
标签: css sass styles stylesheet