.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

一种动态的样式语言--Less 之 导引混合的更多相关文章

  1. 一种动态的样式语言--Less 之 命名空间

    LESS 命名空间 如果想更好的组织CSS或者单纯是为了更好的封闭,将一些变量或者混合模块打包起来,你像下面这样在#bundle中定义一些属性集之后可以重复使用: #bundle{ .button() ...

  2. 微信小程序 JS动态修改样式

    微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...

  3. Less (一种动态样式语言)

    Less (一种动态样式语言). LESS是一种由Alexis Sellier设计的动态层叠样式表语言,受Sass所影响,同时也影响了 Sass的新语法:SCSS. LESS是开源的,其第一个版本由R ...

  4. less 一种 动态 样式 语言

    LESS « 一种动态样式语言 http://www.bootcss.com/p/lesscss/ 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数 ...

  5. Web前端一种动态样式语言-- Less

    变量 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用.所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了. // LESS @color: #4D926F; #header { ...

  6. 动态样式语言Sass&Less介绍与区别

    一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写, ...

  7. 动态样式语言Less学习笔记

    介绍资料参见:http://www.bootcss.com/p/lesscss/ LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支 ...

  8. js动态创建样式: style 和 link

    js动态创建样式: style 和 link ie6 不能 document.createElement('style') 然后append到head标签里.所以就找到这样个好文章 有很多提供动态创建 ...

  9. DOM--5 动态修改样式和层叠样式表

    W3C DOM2 样式规范 CSSStyleSheet对象 表示所有css样式表,包括外部link和嵌入style的;通过document.styleSheets属性可以获得文档中CSSStyleSh ...

随机推荐

  1. 【java】java删除文件delete和deleteOnExit 方法的区别,为什么调用deleteOnExit无效?

    delete() 是即刻删除 public boolean delete() { SecurityManager security = System.getSecurityManager(); if ...

  2. Linux学习笔记之秋水BBR一键部署

    0x00 本脚本适用环境 系统支持:CentOS 6+,Debian 7+,Ubuntu 12+内存要求:≥128M 阅读文章时请除手动删出干扰字符“1”.(Shadowsocks) 0x01 关于本 ...

  3. java 泛型和object比较

    引言 我们使用object和泛型做形参,都是为了让这个方法能接收更多类型的对象,让程序变得更健壮,代码复用率更高.当我们回看自己写的代码时会发现,好像使用泛型的地方使用object也可以,使用obje ...

  4. jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载

    jQuery---jQ动画(普通,滑动,淡入淡出,自定义动画,停止动画),jQuery的事件,jQ事件的绑定/解绑,一次性事件,事件委托,事件冒泡,文档加载 一丶jQuery动画 show,hide, ...

  5. Beego 学习笔记10:Easyui使用

    EasyUI使用 1>     下载EasyUI.下载地址:http://www.jeasyui.com/download/index.php 根据自己使用的是jquery还是Angular进行 ...

  6. 汽车制造商表态:必须依靠MES系统来管控流程

    汽车行业特点 汽车工业是一个高投入,高产出,集群式发展的产业部门. 汽车自身的投资,生产,研发,供应,销售,维修:前序的原材料,零部件,技术装备,物流:后序的油料,服务,信贷,咨询,保险,直至基础设施 ...

  7. Excel 逐条导入Mysql(数据更新)

    其实,我的业务流程是, 先读取excel/csv -> pandas 数据清洗 -> 导入Mysql, 一般是做一个表append 或者是 if exist -> replace的操 ...

  8. 记使用pyspider时,任务不执行的问题原因:save太大。

    pyspider使用save传递大量文本时,如果是mysql数据库,有可能出现问题,因为任务表默认用的blob字段.字符数是有限制的. 解决办法就是手动把字段类型改成longblob. 希望作者能直接 ...

  9. MySQL数据库中字符串函数之left、right用法

    语法 LEFT(str,len) Returns the leftmost len characters from the string str, or NULL if any argument is ...

  10. VS2015配置Qt5

    目录 需要准备的东西 VS2015 Qt5 VS2015 Qt插件 rc.exe无法启动 基于CMake的Qt工程 reference 需要准备的东西 Visual Studio 2015 Qt5 V ...