Less的条件表达式

Less的条件表达式

当须要根据表达式,而不是参数的值或数量进行匹配时,条件表达式(Guards)就显得很是有用。若是你熟悉函数式编程的话,对条件表达式也不会陌生。html

为了尽量地接近CSS的语言结构,Less使用关键字 when 而不是 if/else来实现条件判断,由于 when 已经在CSS的 @media query 特性中被定义。编程

表达式中能够使用比较运算符、逻辑运算符、或检查函数来进行条件判断。less

一、比较运算符函数式编程

Less包含五个比较运算符:<、>、<=、>=、=,能够使用比较运算符(=)来比较数字,字符串、标识符等,而其他的运算符只能与数字一块儿使用。如,如下Less代码:函数

  1. .mixin (@a) when (@a = 20px){
  2.     color:red;
  3. }
  4. .mixin (@a) when (@a < 20px){
  5.     color:blue;
  6. }
  7. .mixin (@a) {
  8.     font-size: @a;
  9. }
  10. h2 {
  11.     .mixin(20px)
  12. }

编译后的CSS代码为:url

  1. h2 {
  2.   color: red;
  3.   font-size: 20px;
  4. }

此外,还能够使用关键字true,它表示布尔真,如下两个mixin是相同的:spa

  1. .truth (@a) when (@a) { ... }
  2. .truth (@a) when (@a = true) { ... }

在Less中,只有 true 表示布尔真,关键字true之外的任何值,都被视为布尔假。如:code

  1. .class {
  2.   .truth(40);  // 不会匹配以上任何定义
  3. }

Less中,Guards能够是多个表达式,多个表达式之间,使用逗号‘,’分隔。若是其中任意一个表达式的结果为 true,则匹配成功,这就至关于“或”的关系。如:htm

  1. .mixin (@a) when (@a < -10), (@a > 10) {
  2.     width: 100px;
  3. }

上述Guards就表示: [-10,10] 之间的值将匹配失败,其他均匹配成功。好比如下调用,.class1 和 .class3 会匹配成功,.class2 将匹配失败:字符串

  1. .class1 {
  2.    .mixin(-20);
  3. }
  4. .class2 {
  5.    .mixin(0);
  6. }
  7. .class3 {
  8.    .mixin(20);
  9. }

编译后的CSS代码为:

  1. .class1 {
  2.   width: 100px;
  3. }
  4. .class3 {
  5.   width: 100px;
  6. }

二、逻辑运算符

Less中,Guards也能够使用 and 和 not 来进行逻辑运算。如,如下Less代码:

  1. .mixin (@a) when (@a > 50%) and (@a > 5px){
  2.     font-size: 14px;
  3. }
  4. .mixin (@a) when not (@a < 50%) and not (@a < 5px){
  5.     font-size: 20px;
  6. }
  7. .mixin (@a) {
  8.     color: @a;
  9. }
  10. .class1 {
  11.     .mixin(#FF0000)
  12.  }
  13. .class2 {
  14.     .mixin(#555)
  15. }

编译后的CSS代码为:

  1. .class1 {
  2.   color: #ff0000;
  3. }
  4. .class2 {
  5.   color: #555555;
  6. }

三、检查函数

若是想基于值的类型、或特定的单位进行匹配,就能够使用 is* 函数。如:

  1. .mixin (@a, @b: 0) when (isnumber(@a)) { ... }
  2. .mixin (@a, @b: black) when (iscolor(@b) and (@a > 0)) { ... }

如下是常见的类型检查函数:

  • Iscolor:是否为颜色值。
  • Isnumber:是否为数值。
  • Isstring:是否为字符串。
  • Iskeyword:是否为关键字。
  • Isurl:是否为URL字符串。
  • 如下是常见的单位检查函数:
  • Ispixel:是否为像素单位。
  • ispercentage:是否为百分比。
  • isem:是否为em单位。
  • isunit:是否为单位。
相关文章
相关标签/搜索