官网的api中,判断和循环是page的后面才被说明的,可能官方认为它们两个也属于“混合”。

但为了更好的学习less,我把它拿到了这章先来了解一下。

注:例子截图是转换成css的语句

1、判断:官网称作Mixin Guards

(1)语法规则:when ( 布尔值 ) { 内容 }

//用法一:when放在函数后面
.change(@color) when (lightness(@color) >= 50%) { //lightness()是less的一个内部函数,根据颜色返回亮度百分比
   
}
.change(@color) when (lightness(@color) < 50%) {
    background-color: @color + #333;
}
.change(@color) { //.change()是自定义的函数
    border-color: @color;
}
.box-part1 {
    width:50px;
    height:50px;
    border:1px solid;
    .change(#ddd); //调用.change()函数
}
.box-part2 {
    width:50px;
    height:50px;
    border:1px solid;
    .change(#555);
}

//用法二:when放在选择器后面
@style: 1;
.box-part3 when (@style = 1) {
    width:50px;
    height:50px;
    border:1px solid #33FF66;    
}
.box-part3 when (@style = 2) {
    width:50px;
    height:50px;
    border:1px solid #FF5500;    
}

//用法三:单独使用when进行判断,此时需要在when前加上“&”符号
.box-part4 {
    width:50px;
    height:50px;
   
}
@style: 1;
&when (@style = 1) { // “& when”中间留有空格,这样也是可以的
    .box-part4 {
        background-color:#FF5500;
    }
}

(2)判断

布尔值:less中任何非true的值都是false,如 @aaa:"1"、#012 等等

条件:>、>=、<=、<、= (注意:判断等于是一个等号并非js中的双等号)

逻辑:and、,、not 来表示与或非

//用法四:判断条件例子
@s1:11%;
@c1:#444; //非数值类型的只能用“=”来判断,包括颜色,如果用其他的判断都返回false
& when (@s1 > 10%) and (@c1 > #444 ) { //与
    .box-part5&:before{content:"and";}
}
& when (@s1 > 10%) , (@c1 > #444 ) { //或,注意less用逗号代替
    .box-part5&:before{content:"or";}
}
& when not (@c1 > #444 ) { //非
    .box-part5&:before{content:"not";}
}
.box-part5&:before{
    width:50px;
    height:50px;
}

(3)判断函数

判断函数只返回true和false,相对比较简单,看上图中的函数名就能知道含义。

(4)模拟else分支

按照官网截图的意思,是需要用到default()函数来模拟else的情况

//用法五:这里我做了个实验,发现default()函数只能在类似于.aaa()的函数式中使用,单独或者在选择器的后面接when使用都会报错
@s2:9%;
.aaa() when (@s2 > 10%) {.box-part6&:before {content:"s2>10%";}}
.aaa() when (default()) {.box-part6&:before {content:"others";}}
.aaa() when (@s2 < 6%) {.box-part6&:before {content:"s2<6%";}}
.aaa();


2、循环:less本身没有循环的语法,但是函数可以递归来调用,这样就可以模拟循环

//用法六:模拟for循环
.for(@i,@cor) when(@i <= 6) { //@i、@cor循环的初值
    .for(@i + 1,@cor + #222); //@i + 1 相当于"++i"
    .box-part@{i} {
        width:50px;
        height:50px;
       
    }
}
.for(1,#F51);

to be continue ......

转载于:https://www.cnblogs.com/wujianbufengsao/articles/6835972.html

跟我一起了解less(3):判断和循环相关推荐

  1. smali to java_Smali —— 数学运算,条件判断,循环

    通过上一篇 Smali 语法解析--Hello World 的学习,了解了 Smali 文件的基本格式.这一篇从最基本的数学运算,条件判断,循环等开始,更加详细的了解 Smali 语法. 数学运算 加 ...

  2. Python时间序列模型推理预测实战:时序推理数据预处理(特征生成、lstm输入结构组织)、模型加载、模型预测结果保存、条件判断模型循环运行

    Python时间序列模型推理预测实战:时序推理数据预处理(特征生成.lstm输入结构组织).模型加载.模型预测结果保存.条件判断模型循环运行 目录

  3. python重复元素判定编程_从零开始学Python编程四:条件判断与循环

    前面已经介绍了不少Python基础知识,大家不要觉得不耐烦,想要学好Python,做好Python开发,一定要打牢基础.大家也发现了,Python中很多基础知识和数学算法是一样的,比如今天要教给大家的 ...

  4. Java判断语句 循环语句

    主题: 判断语句 循环语句 一.判断语句 1.单分支 1 if(条件){ 2 3 //此处插入代码,表示if中的条件成立执行的语句 4 } 注意: 1.条件 必须 boolean 2.if只带 一行代 ...

  5. Sass学习笔记 -- 初步了解函数、运算、条件判断及循环

    函数 sass定义了很多函数可供使用,当然你也可以自己定义函数,以@fuction开始.sass的官方函数链接为:sass fuction,实际项目中我们使用最多的应该是颜色函数,而颜色函数中又以li ...

  6. 打开高效文本编辑之门_Linux Awk之条件判断与循环

    Linux awk之条件判断与循环 声明与简介 AWK 是一种处理文本文件的语言,是一个强大的文本分析工具.awk通常用来处理结构化(固定格式)的文本文件, awk每接收文件的一行,然后执行相应的命令 ...

  7. linux循环条件,shell脚本编写 之 条件选择,条件判断,循环语句

    1 概述 编写shell脚本,一般离不开条件选择,条件判断以及循环语句.掌握这三个语法,将大大提高脚本的编写效率,使得脚本编写更加灵活,完成X相对复杂的工作 2 条件选择if语句 if语句选择执行,逐 ...

  8. python条件输出_python基础(二)条件判断、循环、格式化输出

    继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...

  9. python指定条件分类输出_python基础(二)条件判断、循环、格式化输出

    继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...

  10. 《C++语言入门经典》一第3章 重要的逻辑工具——判断与循环 3.1 条件判断...

    第3章 重要的逻辑工具--判断与循环 视频讲解:90分钟 一个大的问题需要分成若干个小的问题才能够得到解决.C++语言提供了分支语句与循环 语句.当需要一个条件影响到问题的结论时,我们需要判断语句:当 ...

最新文章

  1. java接口的映射文件,详解mybatis通过mapper接口加载映射文件
  2. java jar 打包命令行_Java程序命令行打包Jar
  3. Git之常用的高效处理技巧
  4. java启动scrapy爬虫,爬虫入门之Scrapy 框架基础功能(九)详解
  5. Too Many Segments (easy version) CodeForces - 1249D1(贪心+差分)
  6. 随机效应估算与固定效应估算_一般混合线性模型固定效应、随机效应与另一随机向量的联合估计...
  7. Bootstrap报错:Bootstrap's JavaScript requires jQuery
  8. ubuntu desktop的分辨率设置
  9. Java使用swagger时显示实体类注解问题
  10. 这两年计算机高职考试坎坷路
  11. SpringBoot整合MyBatis后台分页前端BootstrapTable添加删除查看编辑搜索数据(二)
  12. c语言printf输出格式
  13. nginx(二十七)长连接和短连接
  14. page fault
  15. 读《我喜欢生命本来的样子》记(一)
  16. 个推解读 | 各厂商推送消息分类新规出台,APP开发者必看
  17. NLP入门 - 基于Word Embedding + LSTM的古诗生成器
  18. Docker镜像的原理
  19. 21.08.01 cnvoron带你玩转Voron2.4
  20. hadoop(hadoop是什么)

热门文章

  1. LeetCode 530二叉搜索树的最小绝对差
  2. FFmpeg源代码简单分析:日志输出系统(av_log()等)
  3. android 今日头条布局,Android今日头条UI适配完善版
  4. CodeVs天梯黄金Gold题解
  5. UEFI boot: how does that actually work, then?
  6. matlab自定义函数如何报错,MATLAB自定义函数
  7. python全栈构图_Python全栈-magedu-2018-笔记5
  8. 500万数据mysql_mysql 500万数据库
  9. SonarQube遇到的启动问题及解决方案
  10. window下的免安装redis