2017-08-01 4 views
1

aye Leute!sass mixins und css benutzerdefinierte Eigenschaften

Ich habe versucht, ein Sass Mixin für css benutzerdefinierte Eigenschaften zu bauen, um die Arbeit ein wenig einfacher zu machen.

mein Versuch wie folgt aussieht:

@mixin mixin($value) { 
    background: unquote('$')#{$value}; 
    background: var(--#{$value}, unquote('$')#{$value}); 
} 

die Ausgabe wie folgt aussieht:

.example { 
    background: $value; 
    background: var(--colour, $value); 
} 

ABER sass konvertiert nicht mein $ Wert in die eigentliche Sache. der $ value-Teil endet in meiner finalen CSS-Datei und das funktioniert nicht.

Ich habe versucht, eine Lösung online zu finden, aber ich bin entweder zu dumm, um es zu finden, oder es gibt keins. Hat jemand hier eine Idee, was ich falsch mache?

+0

Was ist die CSS-Ausgabe, die Sie erwarten? – blonfu

+0

etwas wie 'background: $ abcdef;' aber was ich bekomme, ist 'background: $ value;' weil sass die Variable nicht in den gegebenen Wert zu konvertieren scheint. –

+0

Sorry, aber ich verstehe nicht, mit Ihrem Code, wenn Sie '# abcdef' in der' $ value' Variable übergeben, erhalten Sie '# abcdef', und warum verwenden Sie Interpolation? – blonfu

Antwort

0

Ich habe Ihren Code mit diesem Beispiel versuchen:

@mixin mixin($value) { 
    background: unquote('$')#{$value}; 
    background: var(--#{$value}, unquote('$')#{$value}); 
} 

.example { 
    @include mixin(colour) 
} 

und es funktioniert. Die Ausgabe lautet:

.example { 
    background: $colour; 
    background: var(--colour, $colour); 
} 

ist das, was Sie wollen? Entschuldigung, aber ich habe keine Berechtigung zum Hinzufügen eines Kommentars, also erstelle ich diese Antwort.

Edit: Sie einen anderen mixin wie folgt erstellen:

@mixin mixin($value, $color) { 
     background: $color; 
     background: var(--#{$value}, $color); 
    } 

diese Ihnen helfen, Ihr Problem zu lösen?

+0

das Problem ist, dass es nicht die Variablen mit der tatsächlichen Farbe in meiner CSS-Ausgabe ersetzt. ich bekomme nur 'background: $ color;' statt 'background: #abcdef;' –

+0

Entschuldigung für mein Missverständnis. Vor Tagen habe ich das gleiche Problem, aber ich entdeckte, dass Sass keine Variablen erlaubt, die dynamisch erstellt oder abgerufen werden können. –

+0

Was bedeutet, wenn ich das richtig verstanden habe, dass es keinen Weg gibt, ein Mixin so zu bauen? meh .. gut, dann. trotzdem danke! (: –

Verwandte Themen