那如果形参如何使用默认值呢?
形参是可以默认值,这样不需要传递参数,如下:
 
less:
 
//5.带参数的混合默认值
.son(@width:200px){
    width:@width;
}
.dad{
    .son();
}
编译后的css:
 
.dad {
  width: 200px;
}
5.1.5带多个参数的混合
一个组合可以带多个参数,参数之间可以使用分号或者逗号来分割。
 
比如:.mini(形参1;形参2)这代表是分号;.mini(形参1,形参2)这代表是逗号。
 
但是建议尽量使用分号来分隔,因为这逗号可以编译为参数分割或者css为列表分割。
 
(1)如果两个参数,而且每个参数都是逗号分割的列表,最后到分号表示结束:.mini(1,2,3;something, ele);
 
less:
 
//6.带多个参数的混合
.mini(@color;@padding:xxx;@margin:2){
    color-1:@color;
    padding-2:@padding;
    margin-3:@margin;
}
.div{
    .mini(1,2,3;something, ele);
}
编译后的css:
 
.div {
  color-1: 1, 2, 3;
  padding-2: something, ele;
  margin-3: 2;
}
分析:在less的.div{.mini(1,2,3;something,ele)}参数只有两个,那么就会传到形参1和形参2,但由于形参3有默认值,所以生成编译后css的结果(如上)。
 
(2)如果三个参数里面都是逗号来分割,就会传到各种参数:.mini(1,2,3)。
 
less:
 
//6.带多个参数的混合
.mini(@color;@padding:xxx;@margin:2){
    color-1:@color;
    padding-2:@padding;
    margin-3:@margin;
}
.div1{
    .mini(1,2,3);
}
编译后的css:
 
.div1 {
  color-1: 1;
  padding-2: 2;
  margin-3: 3;
}
分析:由于参数都是三个,而且采用逗号进行分割,就会传到形参1,形参2,形参3,生成了编译后css的结果(如上)。
 
(3)如果参数里面有逗号,也有分号,那么会传到第一个参数,也就是说传到形参1:.mini(1,2,3;);
 
less:
 
//6.带多个参数的混合
.mini(@color;@padding:xxx;@margin:2){
    color-1:@color;
    padding-2:@padding;
    margin-3:@margin;
}
.div2{
    .mini(1,2,3;);
}
编译后的css:
 
.div2 {
  color-1: 1, 2, 3;
  padding-2: xxx;
  margin-3: 2;
}
分析:多个参数里面有逗号,也有分号,整个多个参数的值就会传到形参1,而且形参2和形参3有默认值,生成了编译后css的结果(如上)。
 
5.1.6 arguments变量
arguments变量表示可变参数,意思是形参从先到后的顺序。注意:这个是参数值位置必须是一一对应。
 
less:
 
//7.arguments变量
.son3(@dd1:20px;@dd2:solid;@dd3:white){
    border:@arguments;
}
.div4{
    .son3();
}
编译后的css:
 
.div4 {
  border: 20px solid white;
}
6.1匹配模式
当传值的时候定义一个字符,在使用那个一个字符,就调用规则集。
 
less:
 
 
// 8.匹配模式
.border(all,@w){
    border-radius: @w;
}
 
.border{
    .border(all,50%);
}
编译后的css:
 
.border {
  border-radius: 50%;
}
7.1得到混合中的变量的返回值
就像调用函数一样的过程。
 
less:
 
//9.得到混合中变量的返回值
.ave(@x,@y){
    @ave:(@x+@y);
}
.son{
    .ave(20px,40px);
    width:@ave;
}
编译后的css:
 
.son {
  width: 60px;
}
分析代码过程:
 
1.首先把二个参数分别为20px和40px传到.ave(@x,@y);
 
2.在.ave{}里面获取了两个值并进行计算结果,然后给变量@ave;
 
3.在.son{}中调用了@ave的值;
 
4.最后生成了编译后css的结果width为60px。
 
8.1嵌套规则(nested-rules)
8.1.1普通的写法
less:
 
//10.嵌套规则
.contain{
  .dad{
      width:30px;
      background-color: #fff;
      .son{
          border-radius: 40px;
      }
  }  
  .dad1{
      height:300px;
      background-color: black;
  }
}
编译后的css:
 
.contain .dad {
  width: 30px;
  background-color: #fff;
}
.contain .dad .son {
  border-radius: 40px;
}
.contain .dad1 {
  height: 300px;
  background-color: black;
}
less写法结构当然很清晰,后期有利于维护,非常简便。
 
8.1.2父元素选择器&
表示当前选择器的所有父选择器,使用&符引用选择器的名。
 
less:
 
//11.父元素选择器&
.bgcolor{
    background: black;
    a{
        color:#fff;
        &:hover{
            color:blue;
        }
    }
}
编译后的css:
 
.bgcolor {
  background: black;
}
.bgcolor a {
  color: #fff;
}
.bgcolor a:hover {
  color: blue;
}
或者也可以用这个
 
less:
 
.contain{
    &>p{
        color:red;
    }
    &+.contain{
        background-color: black;
    }
    & div{
        width: 300px;
    }
}
编译后的css:
 
.contain > p {
  color: red;
}
.contain + .contain {
  background-color: black;
}
.contain div {
  width: 300px;
}
8.1.3改变选择器的顺序&
如果将当前的选择器名字后面放在&,就会当前的选择器提到父级。
 
less:
 
// 12.改变选择器的顺序&
.contain{
    h1&{
        width:200px;
        height:300px;
    }
}
 
#son{
    ul{
        li{
            .contain&{
                height:100px;
                background-color: #fff;
            }
        }
    }
}
编译后的css:
 
h1.contain {
  width: 200px;
  height: 300px;
}
.contain#son ul li {
  height: 100px;
  background-color: #fff;
}
9.1运算(operations)
任何数值,颜色和变量都可以计算的,less当然会自动推断数值的单位,所以不必每一个值都加上单位。
 
less:
 
// 13.运算
.contain{
    font-size:300px+200*2;
}
编译后的css:
 
.contain {
  font-size: 700px;
}
10.1 命名空间
如果将一些变量或者混合块一起打包起来,这样可以支持复用性,也可以通过嵌套多层id或者class来实现。
 
使用#contain()来作为命名空间,而且是在css样式中不会显示#contain()命名空间。
 
less:
 
// 14.命名空间
//实例1
#contain(){//加(),表示css不输出
    background-color: blue;
    .dad{
        width:300px;
        &:hover{
            height:200px;
        }
    }
    .father{
        width:100px;
        height:200px;
    }
}
 
//实例2
.tiweq(){
    color:#fff;
    height:200px;
    .eitw{
        width:100px;
        border:200px;
    }
}
 
//到css中显示
.contain1{
    background-color: aqua;
    #contain>.dad;
}
 
.contain2{
    .tiweq>.eitw;
}
编译后的css:
 
.contain1 {
  background-color: aqua;
  width: 300px;
}
.contain1:hover {
  height: 200px;
}
 
.contain2 {
  width: 100px;
  border: 200px;
}
分析:如果在命名空间中想获取的某样式中,比如想要获取dad{..}模块里面数据的话,那么写#contain>.dad即可,然后到css中就会显示你需要的数据;
 
另外,最省略就是“>”写法。只要你不写“>”,一样都可以获取数据。
 
less:
 
 
// 14.命名空间
.tiweq(){
    color:#fff;
    height:200px;
    .eitw{
        width:100px;
        border:200px;
    }
}
.cotain3{
    .tiweq .eitw;
    
}
编译后css:
 
.cotain3 {
  width: 100px;
  border: 200px;
}
11.1作用域
less中的作用域与编程语言中的作用域概念非常类似。首先会在局部查找变量和混合,如果没找到,编辑器就会在父作用域中查找,以此类推。
 
less:
 
//15.作用域 
@clolor:#ffffff;
 
.contain{
  width: 50px;
  a{
    color: @clolor;
  }
  @clolor:blue;
}
编译后的css:
 
.contain {
  width: 50px;
}
.contain a {
  color: blue;
}
12.1引入(importing)
可以引入一个或多个.less文件,然后这个文件中的所有变量都可以在当前的less项目中使用!比如我有一个main.less文件,而且里面有变量,所以想引入这个main.less文件并使用它的变量。
 
main.less
 
@baby:300px;
index.less
 
//16.引入
@import "../main";//引入main.less文件
 
.contain-qq{
    width:@baby;
}
index.css
 
.contain-qq {
  width: 300px;
}
另外可带参数:
 
//@import "main.less";
//@import (reference) "main.less";  //引用LESS文件,但是不输出
//@import (inline) "main.less";  //引用LESS文件,但是不进行操作
//@import (once) "main.less";  //引用LESS文件,但是进行加工,只能使用一次
//@import (less) "index.css";  //无论是什么格式的文件,都把它作为LESS文件操作
//@import (css) "main.less";  //无论是什么格式的文件,都把它作为CSS文件操作
@import (multiple) "../main.less";  //multiple,允许引入多次相同文件名的文件
@import (multiple) "../main.less";  //multiple,允许引入多次相同文件名的文件
13.1函数库(function)
这个函数库里面很多各种函数,而且内容有点多,有空会补上Less函数库。
-------------------------------------------------------------