[英]Sass variables nested styling
I try to optimize my styling which does have repeated styles mostly我尝试优化我的样式,它确实重复了 styles
i have like this我有这样的
.ds-input.ds--valid .ds-input__control:not(#specificity-issue),
.ds-select.ds--valid .ds-select__control:not(#specificity-issue) {
border-color: var(--my-color);
&:focus {
border-color: var(--my-border-color);
}
}
what i tried to make variables but nested variables gives wrong result我试图制作变量但嵌套变量给出了错误的结果
$dsSelectors: "ds-select, ds-input";
.#{$dsSelectors}.ds--valid.#{$dsSelectors}__control:not(#specificity-issue),
{
border-color: var(--my-color);
&:focus {
border-color: var(--my-border-color);
}
}
do we have any easy and short syntax to fix this我们有任何简单而简短的语法来解决这个问题吗
at the end, expected css will look like this最后,预计 css 将如下所示
.ds-select.ds--valid .ds-select__control:not(#specificity-issue), .ds-input.ds--valid .ds-input__control:not(#specificity-issue) {
border-color: var(--my-border-color);
}
.ds-select.ds--valid .ds-select__control:not(#specificity-issue):focus, .ds-input.ds--valid .ds-input__control:not(#specificity-issue):focus {
border-color: var(--my-color);
}
@each
can use for this purpose. @each
可以用于此目的。 More information and examples: https://sass-lang.com/documentation/at-rules/control/each更多信息和示例: https://sass-lang.com/documentation/at-rules/control/each
The @each rule makes it easy to emit styles or evaluate code for each element of a list or each pair in a map.
@each 规则可以很容易地发出 styles 或评估列表的每个元素或 map 中的每一对的代码。 It's great for repetitive styles that only have a few variations between them.
它非常适合重复的 styles,它们之间只有一些变化。 It's usually written
通常是这样写的
$classes: ds-select, ds-input;
@each $class in $classes {
.#{$class}.ds--valid .#{$class}__control:not(#specificity-issue)
{
border-color: var(--my-color);
&:focus {
border-color: var(--my-border-color);
}
}
}
I make this function but result is bit different:我做了这个 function 但结果有点不同:
$classes: select, input;
@each $class in $classes {
.ds {
&#{-$class}&--valid &#{-$class} {
&__control {
&:not(#specificity-issue) {
border-color: var(--my-color);
&:focus {
border-color: var(--my-border-color);
}
}
}
}
}
}
And result:结果:
.ds-select.ds--valid .ds-select__control:not(#specificity-issue) {
border-color: var(--my-color);
}
.ds-select.ds--valid .ds-select__control:not(#specificity-issue):focus {
border-color: var(--my-border-color);
}
.ds-input.ds--valid .ds-input__control:not(#specificity-issue) {
border-color: var(--my-color);
}
.ds-input.ds--valid .ds-input__control:not(#specificity-issue):focus {
border-color: var(--my-border-color);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.