Wie kann ich Ausgaben vermeiden, wenn der Parameter leer gesendet wird? - CSS, weniger

Ich hatte eine Reihe von Less-Funktionen geschrieben:

.b(@a) when (iscolor(@a))    { border:1px solid @a;}
.b(@a) when (ispixel(@a))    { border: @a;}
.b(@a; @b; @c)    { border: @a @b @c;}

Wenn die Funktion so aufgerufen wird

.b(none; ""; "");

Ich bekomme diese Ausgabe:

border:none "" "";

Ich suche nach:

border:none;

Wenn ich benutze

.b(none; ; );

Ich bekomme diesen Fehler:

erwartet ")" bekam ";"

Ich möchte nicht mehr Funktionen nutzen.

Ich verwende Crunch zum kompilieren.

Kann jemand helfen?

Antworten:

2 für die Antwort № 1

Es gibt mehrere Möglichkeiten:

.b1(...)  {border: @arguments} // you can use variadic args
.b2(@values) {border: @values} // you can use "space delimited" values as a single arg

#usage {
.b1(1px, solid, white);
.b1(2px);
.b2(3px dotted black);
.b2(4px whatever);
}

Ausgabe:

#usage {
border: 1px solid #ffffff;
border: 2px;
border: 3px dotted #000000;
border: 4px whatever;
}

P.S. Und "leere" Argumente (so wie Sie es ursprünglich versucht haben) funktionieren auch - Sie brauchen nur die Werte mit Escapezeichen:

.b(7px, ~"", ~"");

Speisekarte