I've got a Less variable called @side
. What I want is to set the variable @sideOpposite
depending on the value of the @side
variable. It can take only two values: "left" or "right".
In other words I need a Less equivalent of the JS code:
var side = "left",
sideOpposite = (side === "left")? "right" : "left";
I've tried to accomplish this using when
function, but from what I understand it doesn't work that way and is only applicable to CSS properties, not variables:
when (@side = right){
@sideOpposite: left;
}
when (@side = left){
@sideOpposite: right;
}
I don't know if I've understand what you want to do, but from what I get about your question, you can do this with a mixin. See example
Invoke this mixin when you need it left with
.side(left)
or when you need right with.side(right)
.You can take help of the mixin guard feature to allow conditional mixins
See Mixin Guards and Ruleset Guards (aka "CSS Guards") for
when
usage examples. Since you need to define a variable you'll have to use mixin-based condition (rulesets do not expose their variables to an outer scope). E.g.:(Use any suitable mixin name instead of
.-
, e.g..define-opposite-side
).---
And with Argument Pattern Matching it can be further simplified just to: