Abgesehen davon, dass ein escapter Wert wie in meiner anderen Antwort verwendet wird, ist es auch möglich, dieses Problem zu beheben, indem die Strikte Mathematik aktiviert wird.
Mit Strikter Mathematik werden nur Berechnungen innerhalb von unnötigen Klammern verarbeitet, so dass Ihr Code:
width: calc(100% - 200px);
Wie erwartet mit der Option Strikter Mathematik funktionieren würde.
Allerdings ist zu beachten, dass die Strikte Mathematik global angewendet wird, nicht nur innerhalb von calc()
. Das bedeutet, wenn Sie haben:
font-size: 12px + 2px;
Die Berechnung wird nicht mehr von Less verarbeitet -- es wird font-size: 12px + 2px
ausgegeben, was offensichtlich ungültiges CSS ist. Sie müssten alle Berechnungen, die von Less verarbeitet werden sollen, in (zuvor unnötige) Klammern setzen:
font-size: (12px + 2px);
Strikte Mathematik ist eine gute Option, die man in Betracht ziehen sollte, wenn man ein neues Projekt startet, sonst müssten Sie möglicherweise einen Großteil des Codebasiss neu schreiben. Für die häufigsten Anwendungsfälle ist der Ansatz mit den maskierten Strings, wie in der anderen Antwort beschrieben, geeigneter.