less - 根据另一个变量有条件地设置一个变量的值

标签 less less-mixins

我有一个名为 @side 的 Less 变量。我想要的是根据 @side 变量的值设置变量 @sideOpposite 。它只能采用两个值:“左”或“右”。

换句话说,我需要一个更少的 JS 代码:

var side = "left",
    sideOpposite = (side === "left")? "right" : "left";

我尝试使用 when 函数来完成此操作,但据我了解,它不能以这种方式工作,并且仅适用于 CSS 属性,不适用于变量:

when (@side = right){
  @sideOpposite: left;
}
when (@side = left){
  @sideOpposite: right;
}

最佳答案

参见Mixin GuardsRuleset Guards (又名“CSS Guards”)用于 when 使用示例。由于您需要定义一个变量,因此您必须使用基于 mixin 的条件(规则集不会将其变量暴露给外部作用域)。例如:

.-();
.-() when (@side = right) {
    @sideOpposite: left;
}
.-() when (@side = left) {
    @sideOpposite: right;
}

(使用任何合适的 mixin 名称代替 .-,例如 .define-opposite-side)。

<小时/>

还有Argument Pattern Matching它可以进一步简化为:

.-(@side); 
.-(left)  {@sideOpposite: right}
.-(right) {@sideOpposite: left}

关于less - 根据另一个变量有条件地设置一个变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25287904/

相关文章:

css - 使用 Less CSS 可变字体大小

less - 合并较少 mixin 输出

css - 发送属性作为 mixin 的参数

less - 如何重用其选择器使用串联形成的混入

css - 在字符串 var 中使用 calc() 函数进行 Less

css - 如何使用未包含在 react 代码中的悬停?

css - 为 box-shadow : none 编写 LESS mixin

css - Rails Bootstrap 2.3.1 导航栏颜色

css - 如何将包含百分比的变量转换为 LESS 中的数字,但保留普通数字?

css - 如何扩展具有动态形成的选择器的类/mixin