2017-05-08 5 views
1

Ich habe eine Variable weniger mit einem CSS calc() Ausdruck und möchte diese Variable in einem anderen calc() Ausdruck verwenden. Die CSS-Spezifikation erlaubt verschachtelte calc() Ausdrücke, aber nicht alle Browser unterstützen dies (IE/Edge).Merge calc() mit weniger CSS

Da verschachtelte calc() Ausdrücke im Wesentlichen keine echte Verwendung haben (sie sind ein Nebeneffekt der Verwendung von Präprozessorvariablen), frage ich mich, ob es möglich ist, sie zu einem einzigen Ausdruck mit LESS zusammenzuführen.

von Beispiel möchte ich dies:

@var1: ~"calc(5rem/10px)"; 
@var2: ~"calc(50px + "@var1~")"; 

in kompilieren:

calc(50px + (5rem/10px)) 

Statt dessen:

calc(50px + calc(5rem/10px)) 
+1

Kurz gesagt, nein, weniger hat absolut keine Ahnung, was das 'calc' Sache ist (vor allem nach Du legst es in "~" "'). Das ist der Grund, einen solchen 'calc' Ausdruck nicht als Werte in Variablen zu haben. Sie könnten 'clean-css' verwenden, und wenn ich mich nicht täusche, sollte es redundante' calc' unter einigen aggressiveren Optionen entfernen. –

Antwort

0

ich eine Art von "schmutzigen Trick" fand die LESS replace() Funktion:

@var2: ~"calc(50px + "replace(@var1, "calc", "")~")"; 

Beachten Sie, dass, wenn das Kind calc() Ausdruck andere Variablen enthält, funktioniert es nur, wenn sie interpoliert werden:

@var1: 5rem; 
@var2: ~"calc(@{var1}/10px)"; 
@var3: ~"calc(50px + "replace(@var2, "calc", "")~")"; 
0

Könnten Sie möglicherweise spaltete die erste var in zwei? Zum Beispiel:

@var1a: 5rem/10px; 
@var1: calc(@var1a); 

Wo:

  • @var2a: ~"calc(50px + "@var1~")";calc(50px + calc(0.5rem))
  • @var2b: ~"calc(50px + @{var1a})"; produziert produziert calc(50px + 0.5rem)
+0

Ich verstehe nicht wirklich, was Sie hier erreichen wollen. Ich möchte nicht, dass der innere Ausdruck von calc() ausgewertet wird. Ich möchte, dass es Teil des Elternausdrucks ist. um es als eins zu verschmelzen. –