less学习

less——css预处理器
引入

<link rel="stylesheet" href="lib/honeySwitch.css">

<link rel="stylesheet/less" href="lib/honeySwitch.less"> // css名改less
<script src="https://cdn.bootcss.com/less.js/3.0.4/less.min.js"></script> // 引这句代码(写在head里)

引用

在一个less里引用另一个less
@import "./lib/comp.less"

编译

编译转换:less ==> css
编译工具--koala:http://koala-app.com/

定义变量 @
@colorp:pink;
@colorb:blue;  //定义样式
@m: margin;  //定义属性(一般不用)
@selector: .btn   //定义选择器(一般不用)
*   {
    @{m}: 0;    属性和选择器在写的时候要加上 {} ,而样式不用
    padding: 0;
  }
@{selector} {
          backgroundColor:@colorp;
          border: 1px solid @colorb;
       }
延迟加载,作用域
  • 作用域:一个 { } 里算一个作用域
  • 延迟加载:等作用域里的所有变量加载完,再执行其他操作
    @var:  #1111111;
        div  {
        @var:  #333333;
        color:  @var;    由于延迟加载,这里的color: #666666
        @var:  #666666
    }
     backgrundColor: @var     由于作用域的原因,这里是backgroundColor: #111111
嵌套规则,&
  • less与css的区别之一就是less可以嵌套写
  • &符号是指当前元素
   .div1{
         300px;
        height: 300px;
        .div2{
              50px;
              height:50px;
              backgroundColor: blue;
              &: hover {          这里的&: hover 既  div2: hover
               backgroundColor: red;
              }
              & span{
                   display:block;  
              }
        }
  }
混合 —— 以 . 开头,并且有 ( )

  定义混合(以 . 开头):
    .beijing(@w:10px,@h:10px,@bgc: pink){    带参混合(参数间用逗号隔开)。
             @w;                       设定默认值10,10,pink(若不设定默认值,
            height: @h;                      下面引用时少输入一个参数, 就会报错,  
            bacjgroundColor: @bgc;           如只输入10px,purple)
      }

  调用:
      .div1{
          .beijing(100px,100px,blue);    所有参数均输入===100px,100px,blue
      }
      .div2{
          .beijing();   未输入参数,则直接调用默认值===10px,10px,pink
      }
      .div3{
          .beijing(@bgc: red);    指定输入参数(既命名参数),则其他未输入
      }                           的为默认值===10px,10px,red
匹配模式(例子:画一个三角形)
定义混合:
.triangle(@_,@w,@c){      这里是公用代码。 @_ 是匹配符的意思,既在调用相同名字的代码时,
       0;            带匹配符的就算没调用也没关系,系统会默认调用。 
      height: 0;          所以:1相同名字(如这里的triangle),2匹配符,
      overflow: hidden;    3公用代码,三者组成公用样式
}
.triangle(T,@w,@c){          T,R,B,L===标识符(less语法之一)
    border- @w;
    border-style: solid;
    border-color: @c transparent transparent transparent
}
.triangle(R,@w,@c){
    border- @w;
    border-style: solid;
    border-color: transparent @c transparent transparent
}
.triangle(B,@w,@c){
    border- @w;
    border-style: solid;
    border-color: transparent transparent @c transparent
}
.triangle(L,@w,@c){
    border- @w;
    border-style: solid;
    border-color: transparent transparent transparent @c 
}

调用:
.sanjiaoxing1{
      .triangle(R,40px,blue);
  }
.sanjiaoxing2{
     //.triangle();   此处可以省略不调用,用上面说的@_匹配符可以解决问题
      .triangle(B,50px,purple);
  }
继承

性能比混合高,灵活度比混合低

避免编译

符号 ~" "
~" 这里是需要避免编译的代码 "

原文地址:https://www.cnblogs.com/huihuihero/p/10801071.html