2014-05-23 21 views
15

Ich habe das schon eine Weile versucht, andere Antworten zu suchen, aber ohne Erfolg. Hoffentlich kann mir jemand helfen.Dynamische Variablennamen in LESS CSS

Ich versuche, einige dynamische Variablennamen innerhalb eines Mixins zu generieren.

Die Variablen sind bereits definiert:

@horizontal-default-color: #fff; 
@horizontal-inverse-color: #000; 

etc ..

Die mixin ich so etwas wie dies würde sein wollen:

.horizontal-variant(@variant) { 
    color: @{[email protected]{@variant}-color} 
} 

Und das Ergebnis ich erwarte, wenn sie aufgerufen :

.horizontal-default{ 
    .horizontal-variant(~"default"); 
} 
.horizontal-inverse{ 
    .horizontal-variant(~"inverse"); 
} 

ist

.horizontal-default {color: #fff} 
.horizontal-inverse {color: #000} 

Leider laufe ich jedes Mal in Fehler.

Ich weiß, dass dies getan werden kann, ich habe gesehen, dass es in Schriftart Awesome LESS verwendet wird, wo @{fa-css-prefix} in Variablen definiert ist. Ich habe nur Probleme beim Transport der gleichen Lösung in meinem Projekt.

können Sie versuchen, den Code an http://lesstester.com/

Antwort

33

Sie testen Variable Names verwenden können. Und ich habe den Code unter http://lesstester.com/ getestet, es funktioniert.

@horizontal-default-color: #fff; 
@horizontal-inverse-color: #000; 

.horizontal-variant(@variant) { 
    @color: "[email protected]{variant}-color"; 
    color: @@color; 
} 

.horizontal-default{ 
    .horizontal-variant(~"default"); 
} 
.horizontal-inverse{ 
    .horizontal-variant(~"inverse"); 
} 
+0

Wie wäre es auch, Standardwerte zu setzen? Ich meine, ich möchte, dass meine Variable mit einem Standardwert erstellt wird, um später überschrieben zu werden. Ist es überhaupt möglich? – kboom

+0

@kboom Ja, Sie können das genau so tun: https://gist.github.com/Witcher42/e58c814de05c0fb49678#file-vnwdv-less – Witcher42

+0

Ich meine, ich möchte @ horizontal-default-color: #fff überspringen ; @ horizontal-inverse-Farbe: # 000; Definitionen. Ich möchte weniger solche Variablen für mich erstellen, wenn ich etwas wie .horizontal-variant (45px) mache - dann würde ich etwas wie @ horizontal-variant: 45dx bekommen, ohne wirklich eine solche Variable zu erzeugen. Dann würde ich etwas bekommen, das später ohne Anstrengung überschrieben werden würde, um es selbst zu definieren. – kboom