2013-06-20 23 views
43

使用SASS,我想有多个条件IF语句使用多个条件(AND)在上海社会科学院IF语句

我用什么现在:

@function color-x ($alpha) { 
    @if  $accent == red {@return red($alpha)} 
    @else if $accent == green {@return green($alpha)} 
    @else if $accent == blue {@return blue($alpha)} 
} 

我天真的(失败)尝试使用多个条件:

@function color-x ($alpha) { 
    @if  $accent == red && theme == light {@return red($alpha)} 
    @else if $accent == green && theme == light {@return green($alpha)} 
    @else if $accent == blue && theme == light {@return blue($alpha)} 
} 

是否有可能有多个康迪特离子?

回答

82

从萨斯语言参考文档:

布尔运算

SassScript支持andor,并not运营商布尔值。

(link)

因此,一个如果与复合条件语句的表达应该是这样的:

@if $var1 == value1 and $var2 == value2 { 
    // ... 
} 

此外,括号可以用来影响更复杂的表达式的操作顺序:

@if ($var1 == value1 and not ($var2 == value2)) or ($var3 == value3) { 
    // ... 
} 
+0

非常感谢。 – 500

+2

如果有其他人遇到这种情况,'和'部分必须全部小写 - 使用AND(全部大写)不起作用。 – cantera

+0

不知何故,我在像JS这样的sass中使用&&!感谢您的澄清! –

2

您还可以:

@if index("foo" "bar", $value) { .. } 

要小心的是:

  1. 它可能不是很明显你正在尝试做的。
  2. 它返回一个数字或null,而不是一个布尔值。
相关问题