2016-08-31 6 views
1

Inside my Komponente würde Ich mag einen Modifikator hinzuzufügen, die eine höhere Spezifikation haben sollte, so meine Ausgabe sollte wie folgt aussehen:.SASS/SCSS nicht akzeptiert & &

gewünschte Ausgabe:

.component { 
    // ... 
} 

.component.component--modifier { 
    // ... 
} 

SCSS Vorschlag:

Aber das funktioniert nicht, ich bekomme Kompilierfehler: Art von "Formatfehlern" oder "ungültigen CSS".

Antwort

2

Sie einen mixin definieren könnte:

@mixin mod($n) { 
    .#{$n} { 
     color: blue; 
    } 
    .#{$n}.#{$n}--modifier { 
     color: red; 
    } 
} 
@include mod(component); 

Ausgang:

.component { 
    color: blue; 
} 

.component.component--modifier { 
    color: red; 
} 

Aber es ist wahrscheinlich ein mehr raisonnable Ansatz, um Ihr eigentliches Problem, wie mit einer modifier Klasse.

+0

Sieht aus wie eine gute Lösung, aber es sollte nicht eine native Lösung sein? Oder ist das wirklich ein Randfall? –

+1

@NEXTLEVELSHIT Ja, das ist wirklich ein Edge-Case, normalerweise müssen Sie keine dynamischen Klassen definieren. –

0

Eine einfachere Lösung ist die zweite & interpoliert werden, indem sie in #{&} setzen:

.component { 
    // ... 
    &#{&}--modifier { 
    // ... 
    } 
} 

Hinweis: Der Punkt zwischen den beiden & nicht benötigt, weil & es bereits enthält.

Eine äquivalente mixin zu Densys Zusammenhang wäre:

@mixin modifier($modifier) { 
    &#{&}--#{$modifier} { 
    @content; 
    } 
} 

Verbrauch:

.component { 
    @include modifier(breadcrumb) { 
    // ... 
    } 
} 
+0

** Hinweis: ** Diese Lösung funktioniert nicht mit verschachtelten Modifikatoren. –

Verwandte Themen