.mixin (@a) when (lightness(@a) >= 50%){
background-color: black;
} .mixin (@a) when (lightness(@a) < 50%){
background-color: white;
}
.mixin (@a){
color: @a
}

when关键字用以定义一个导引序列,当运行代码:

.class1{.mixin(#ddd)}

.class2{.mixin(#555)}

会得到

.class1{

  backgrund-color: black;

  color: #ddd

}

.class2{

  background-color: white;

  color: #555;

}

可能很多人不明白,when(lightness(@a) >= 50%) 这里的表达式是怎么成立的,其实这个是less内置函数lightness在作用了,lightness :从颜色对象的 HSL 色彩空间中提取亮度值:

参数: color - 颜色对象。

返回值: 百分比(percentage) 0-100

案例: lightness(hsl(90, 100%, 50%))

输出: 50%

lightness(#ddd) => 87%; lightness(#555) => 33%

导引中可用的全部比较运算有: >  >=  =  =<  <。此外,关键字true只表示布尔值,下面两个混合是相同的:

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

除去关键字true以外的值都被表示布尔假:

.class{
.truth(40); //Will not match any of the above definitions
}

导引序列使用逗号“,” 分割,当且仅当所有条件都符合时,才会被视为匹配成功。

.mixin(@a) when (@a > 10), (@a < -10) { ... }

导引可以无视参数,也可以对参数进行比较运算:

@media: mobile;

.mixin (@a) when (@media = mobile){ ... }
.mixin (@a) when (@media = desktop){ ... } .max (@a, @b) when (@a > @b) { width: @a }
.max (@a, @b) when (@a < @b) { width: @b }

最后,如果想基于值的类型进行匹配,我们就可以使用is*函式:

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

下面就是常见的检测函式:

iscolor 、isnumber、isstring、iskeyword、isurl

如果你想判断一个值是纯数字,还是某个单位量,可以使用下列函式:

ispixel 、ispercentage、isem

在导引序列可以使用and关键字实现与条件:

.mixin (@a) when (isnumber(@a)) and (@a > 0){...}

使用not关键字实现或条件

.mixin (@b) when not (@b > 0) { ... }

less函数手册: http://less.bootcss.com/functions/#color-definition

最新文章

  1. Referenced file contains errors (http://www.springframework.org/schema/context). For more information, right click on the message in the Problems
  2. Lua 学习笔记(八)错误(error)
  3. git gui 学习
  4. linux下svn的co如何排除目录
  5. [资源] Getting started with Tensorflow
  6. VS复习 -- if&#183;&#183;&#183;else和if&#183;&#183;&#183;else嵌套语句
  7. B-tree/B+tree/B*tree [转]
  8. SqlDependency 的使用
  9. VPN指定某个程序,其实是改路由表(赛风支持VPN和SSH和SSH+模式)
  10. Html.Partial(&quot;&quot;)与Html.RenderPartial(&quot;&quot;)区别
  11. [Android 4.4.4] 泛泰A870 通过刷第三版 Mokee4.4.4 KTU84P 20140626 RC2.1 by syhost
  12. CXF.bat
  13. 在Ubuntu Linux下制作Windows 启动安装 USB盘
  14. javacpp-opencv图像处理3:使用opencv原生方法遍历摄像头设备及调用(增加实时帧率计算方法)
  15. 利用git pull的勾子实现敏捷部署
  16. Tomcat调试404错误
  17. pip命令出现了问题,提示说找不到ssl模块
  18. js 类
  19. 在windows下使用jenkins部署docker容器
  20. SpringBoot入门笔记(一)、HelloWorld

热门文章

  1. 创建新react项目 运行npm start 报错踩过的坑
  2. 【转帖】普通程序员如何转向AI方向
  3. IDEA中Tomcat部署时war和war exploded区别
  4. mysql获取某个字段平均值方法AVG函数的使用
  5. 『数 变进制状压dp』
  6. java学习:循环结构的使用规则和注意事项
  7. - Git常用命令 基础 总结 MD
  8. Tomcat 中的 Session 和 Cookie
  9. .net Core 解决Form value count limit 1024 exceeded. (文件上传过大)
  10. 理解 BLS 签名算法