注释 //

  1. // 这是less单行注释,注释中的内容不会被编译到css文件中
  2. /* 这是原版css注释,里面的内容会被编译到css文件中去 */

后代嵌入

  1. .box1{
  2. height: 100px;
  3. width: 100px;
  4. .box2{
  5. border-radius: 50%;
  6. }
  7. }

编译后为

  1. .box1{
  2. height: 100px;
  3. width: 100px;
  4. }
  5. .box1 .box2{
  6. border-radius: 50%;
  7. }

darken() 加深

  1. body{
  2. background-color: darken(#bfa,10%);
  3. }

这个函数用于加深颜色

  • 第一个参数是颜色
  • 第二个参数是百分比

$样式名

使用$样式名可以直接引用其它属性的名

  1. .box{
  2. height: 300+500px;
  3. width: 500 * 2px;
  4. width: 1600 / 40px;
  5. height: $width;
  6. }

计算

使用值时,可以直接计算

  1. .box{
  2. height: 300+500px;
  3. width: 500 * 2px;
  4. }

@ 定义变量

  1. @red:#f10000;
  2. @w:100px;
  3. @a:10px;
  4. .box{
  5. height: 300+500px;
  6. width: 500 * 2px;
  7. width: 1600 / 40px;
  8. height: $width;
  9. border-width: @a;
  10. }

@{变量名}

可以将变量的值作为选择器使用

  1. @className:box2;
  2. .@{className}{
  3. width: 100px;
  4. }

引入变量方式

1、直接写
2、通过大括号引入


使用变量

使用变量时候依据就近原则
同样都在括号里面,后面把前面覆盖

  1. @a:10px;
  2. @className:box2;
  3. .box{
  4. @a:20px;
  5. height: 300+500px;
  6. width: 500px;
  7. height: $width;
  8. border-width: @a;
  9. }

每一个{}都是一个独立作用域

  1. @a:10px;
  2. .box{
  3. @a:20px;
  4. height: 300+500px;
  5. width: 500px;
  6. height: $width;
  7. border-width: @a;
  8. }
  9. .box1{
  10. width: @a;
  11. }
  • 我们使用变量时,会先在当前的{}中寻找
  • 如果找到则直接使用,如果没有则去上一级{}中寻找
  • 找到则使用,如果没有则继续去上一级寻找,直到找到为止
  • 如果一直到最外层依然没有,则报错(无法编译)

mixins

通过mixins将不同类的样式进行混用
mixins的使用有两种方式

1、源码

  1. .box1{
  2. height: 100px;
  3. width: 100px;
  4. }
  5. .box2{
  6. .box1()
  7. }

混用的样式只能用类选择器,不能用元素选择器
**
编译后

  1. .box1{
  2. height: 100px;
  3. width: 100px;
  4. }
  5. .box2{
  6. height: 100px;
  7. width: 100px;
  8. }

2、:extend()

可以将其他的选择器上的样式,扩展到当前的选择器上
和mixins不同,mixins是将全部样式复制了一遍
extend()是通过选择器分组的形式对样式进行扩展

  1. .box2:extend(.box1){
  2. font-size:14px;
  3. }

编译后为

  1. .box1 .box2{
  2. width:100px;
  3. height:100px;
  4. }
  5. .box2{
  6. font-size:14px;
  7. }
  1. .box2:extend(.box1 all){} ----------扩展box1相关的所有样式

定义mixins(传参)

定义mixins时候,如果在名字后边添加了()则mixins中的样式不会被编译到css文件中

  1. .box1(){
  2. height: 100px;
  3. width: 100px;
  4. }
  5. .box2{
  6. .box1()
  7. }

编译后

  1. .box2{
  2. height: 100px;
  3. width: 100px;
  4. }

而且在括号中可以定义参数
这个参数相当于定义了一个变量,但是并没有赋值

  1. .hello(@a){
  2. width:@a;
  3. height: 100px;
  4. backgroud-color:red;
  5. }

使用mixins时,可以向括号中传值,我们所传的值会赋值给变量

  1. .hello(@a,@b){
  2. width:@a;
  3. height: @b;
  4. backgroud-color:red;
  5. } ------------相当于定义了一个函数
  6. .wrapper{
  7. .hello(30px,50px)
  8. } ------------------相当于使用函数

形参/实参

定义函数的时候叫形参,形式参数,没有值
调用的时候交实参,实际参数

默认参数

可以在mixins中指定默认参数

  1. .border(@bw:1px)
  1. .border(@bw:1px){
  2. border:@bw red solid;
  3. }
  4. h1{
  5. .hello(300px,400px)
  6. .border();
  7. }

传递参数时默认情况下必须按照顺序
传递实参时可以按照顺序或者参数名来传递
按照参数名传参那么顺序就不重要了

  1. .hello(@b:30px,@a:50px);

& 外层选择器

  1. .box1{
  2. width:100px;
  3. .box2{
  4. color:red;
  5. .box3{
  6. background-color:#bfa;
  7. }
  8. }
  9. }
  10. &{
  11. height:345px;
  12. }
  1. ul{
  2. background-color:#bfa;
  3. & > li{
  4. float:left;
  5. }
  6. }
  1. .box4:extend(ul){
  2. }
  3. .box4{
  4. &:extend(ul);
  5. }
  6. 这两种写法是一样的

@import导入

用来导入,可将外部的less代码导入到目前的less中
可以分功能模块写好less,然后导入转css,这样降低了不同文件之间的耦合