Nehmen wir an, Sie müssen einen bestimmten Selektor an mehreren Stellen in Ihrem Code verwenden. Das ist sicher nicht übermäßig üblich, aber es passiert eben. Wiederholter Code ist typischerweise eine Gelegenheit zur Abstraktion. Werte in Sass zu abstrahieren ist einfach, Selektoren sind da schon etwas kniffliger.
Eine Möglichkeit, dies zu tun, ist, Ihren Selektor als Variable zu erstellen. Hier ist ein Beispiel, das eine durch Kommas getrennte Liste von Selektoren ist
$selectors: "
.module,
body.alternate .module
";
Um dies zu verwenden, müssen Sie die Variable interpolieren, so:
#{$selectors} {
background: red;
}
Das funktioniert auch mit Verschachtelung
.nested {
#{$selectors} {
background: red;
}
}
Präfixierung
Eine Variable kann auch nur ein Teil eines Selektors sein, wie ein Präfix.
$prefix: css-tricks-;
.#{$prefix}button {
padding: 0.5rem;
}
Sie könnten auch Verschachtelung verwenden, um Präfixe zu erstellen
.#{$prefix} {
&module {
padding: 1rem;
}
&header {
font-size: 110%;
}
&footer {
font-size: 90%;
}
}
Selektoren in einer Map
Vielleicht eignet sich Ihre Abstraktion für eine Schlüssel/Wert-Situation. Das ist in Sass eine Map.
$selectorMap: (
selectorsFoo: ".module",
selectorsBar: ".moodule-2"
);
Sie können sie einzeln verwenden, wie
#{map-get($selectorMap, selectorsFoo)} {
padding: 1rem;
}
Oder durch sie iterieren
@each $selectorName, $actualSelector in $selectorMap {
#{$actualSelector} {
padding: 1rem;
}
}
Beispiele
Siehe den Pen Sass Variables for Selectors von Chris Coyier (@chriscoyier) auf CodePen.
Sie können auch wie folgt präfixieren
http://codepen.io/RamonDreise/pen/XpWjVV
Gut. Sie können & verwenden, um auf ein übergeordnetes Element zu verweisen, und $x, um etwas als Variable zuzuweisen.
Das ist sehr nützlich, wenn man mit BEM arbeitet.
Ich mag diese Präfixierungsmethode, aber ich mache es so
.prefix {
&–stuff
}
Auf diese Weise, wenn ich eine Klasse wie .prefix-method habe, wird daraus .prefix-method–stuff.
Eine kleine Funktion und ein Mixin, um etwas Flexibilität zu schaffen
Siehe den Pen SCSS selector mixin von jakob-e (@jakob-e) auf CodePen.
Eine kleine Funktion und ein Mixin, um etwas Flexibilität zu schaffen
http://codepen.io/jakob-e/pen/ggOmjO/
Cool, ziemlich nützlich für Mixins. Gerade heute musste ich einen optionalen Subselektor als Parameter haben, damit ich Stile für den Standardselektor im Mixin oder ein anderes Kindelement gezielt ansprechen kann, so wie
Seien Sie vorsichtig, da dies manchmal nicht das ergibt, was Sie erwarten. Dinge wie
div > #{$my-selectors}werden sich nicht so erweitern, wie Sie es möchten.