Is there a way to use variables in Less for the ~ operator, like ~"calc(100% - @spacing)";

CssLessCss Calc

Css Problem Overview


Is there a way to use variables in less ~ operator, like

~"calc(70% - @spacing)";

When I have tried it it only works with static values like

 ~"calc(70% - 10px)";

Can I get the string to be evaluated prior to beeing set as a property.

Css Solutions


Solution 1 - Css

To disable the calculation which LESS does automatically when discovering a - between two numeric values but still being able to use variables, you can write one of the following:

  1. Only escape the operator that triggers the calculation and use the variable like you normally do

    @padding: 20px; body { padding: calc(100% ~"-" @padding); }

  2. Escape the whole expression and interpolate the variable with the @{padding} notation

    @padding: 20px; body { padding: ~"calc(100% - @{padding})"; }

I prefer the second version, since it resembles javascript's template literals and looks a bit cleaner, but either way works just fine.

Both solutions disable the automatic Less calculation and compile to the correct result:

body {
  padding: calc(100% - 20px);
}

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionpatricjanssonView Question on Stackoverflow
Solution 1 - CssChristophView Answer on Stackoverflow