Reputation: 2570
What i want to achieve with normal CSS:
.reduit__search-input {
border-width: 2px;
border-style: solid;
border-radius: 0% !important;
}
.reduit__search-input:not(.error--text), .reduit__search-input:not(.error--text) fieldset {
border-color: var(--v-primary-base);
}
How i've written with SASS:
.reduit__search-input {
border-width:2px ;
border-style: solid;
border-radius: 0% !important;
&:not(.error--text) , &:not(.error--text) fieldset {
border-color: var(--v-primary-base);
}
}
My question :
As you noticed &:not(.error--text)
is repeated twice in SASS, I wonder if there is a trick to simplify this ?
Upvotes: 0
Views: 71
Reputation: 2011
You can use &:not(.error--text)
like parent level and use it in nested selectors (&, fieldset
) to omit code duplicates:
.reduit__search-input {
border-width:2px ;
border-style: solid;
border-radius: 0% !important;
&:not(.error--text) {
&, fieldset {
border-color: var(--v-primary-base);
}
}
}
Output:
.reduit__search-input {
border-width: 2px;
border-style: solid;
border-radius: 0% !important; }
.reduit__search-input:not(.error--text), .reduit__search-input:not(.error--text) fieldset {
border-color: var(--v-primary-base); }
Another way, you can do next:
You can try to use SASS Placeholder approach, in case of using placeholder selector to extend, border-primary-base
will not render in CSS output:
%border-primary-base {
border-color: var(--v-primary-base);
}
.reduit__search-input {
border-width:2px ;
border-style: solid;
border-radius: 0% !important;
&:not(.error--text) {
@extend %border-primary-base;
fieldset {
@extend %border-primary-base;
}
}
}
Output:
.reduit__search-input:not(.error--text), .reduit__search-input:not(.error--text) fieldset {
border-color: var(--v-primary-base); }
.reduit__search-input {
border-width: 2px;
border-style: solid;
border-radius: 0% !important; }
Upvotes: 1