Less

Less类似于jquery,是一个库。相当于css的jQuery.
是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护。
在less文件中使用/**/注释的文字在导出的css文件里面会显示出来,而使用//注释的文字在导出的css文件里面不会显示出来

变量声明

Less 中 用 @符号声明变量,如:
@width:100px;
使用变量,如:
div{
width:@width;
}

less混合
.box{
    background-color:#fff;
   .border;  /*引用border样式*/
}
.border{
   border:1px solid red;
}

 

带参数的混合
.box{
    background-color:#fff;
   .border_02(5px);/*括号里必须带值*/
}
.border_02(@border_width){
   border:@border_width solid yellow;
}
默认混合(不传入参数则走默认值,传入参数则走传进来的这个值)
.border_03(@border_width:10px){
  border:@border_width solid green;
}
.div1{
  .border_03();/*走的是默认值,即10px的边框*/
}
.div2{
  .border_03(15px);/*走的是传递进来的参数,即15px的边框*/
}

 


三角
常规

.sanjiao{
  width:0;
  height:0;
  overflow:hidden;
  border-width:10px;
  border-color: transparent transparent red transparent;
  border-style: dashed dashed solid dashed;
/*写dashed是为了兼容ie6*/
}

匹配模式(类似if)
.triangle(top,@w:5px,@c:#ccc){
  border-width:@w;
  border-color:transparent transparent @c transparent;
  border-style: dashed dashed solid dashed;
}
.triangle(bottom,@w:5px,@c:#ccc){
  border-width:@w;
  border-color:@c transparent transparent transparent;
  border-style: solid dashed dashed dashed;
}
.triangle(left,@w:5px,@c:#ccc){
  border-width:@w;
  border-color:transparent @c transparent transparent;
  border-style: dashed solid dashed dashed;
}
.triangle(right,@w:5px,@c:#ccc){
  border-width:@w;
  border-color:transparent transparent transparent @c;
  border-style: dashed dashed dashed solid;
}
.triangle(@_,@w:5px,@c:#ccc){
  width:0;
  height:0;
  overflow:hidden;
}
.sanjiao1{
  .triangle(right,10px);
}

//匹配模式就是先把各种情况写好,在类名后面传入参数,需要时直接调用,传入@_代表不管哪种情况都要带上这段代码。
//传的哪个参数,用的就是哪个的样式 } 
 .pos(a){ position:absolute } 
.pos(f){ position:fixed; }
 .box{ .pos(f); }
Less运算
可以进行加减乘除运算,只要有一个带像素的即可, 符号两边需要空格
eg:

@test_01:300px;
.box_02{
  width:@test_01 + 20;
  height: (@test_01 - 200) * 5;
  background:#ccc - 10;
}
Less嵌套规则

在父级class下 可以 嵌套class 或者标签
但是最好别嵌套太多层,会影响加载速度。

写:hover直接用&:hover “&代表他的上一级(父)选择器”
eg:
.list{
    list-style: none;
    margin:30px auto;
    padding:0px;
    width:600px;
    li{     /*相当于.list li*/
        height: 30px;
        padding:0 10px;
        background-color: pink;
        line-height: 30px;
        margin:10px;
    }
    a{
        float:left;
        &:hover{  /*& 表示上一层选择器,&符号代表的是父级的类名或者id名,即 a:hover     这里是伪类的用法,详情见Sass博客
        &_nav相当于a_nav*/
        color:red; } 
       } 
span{ float:right; }
 }

 


@arguments包含了所有传递进来的参数。
eg:
 @border(@w:30px,@c:red,@s:solid){
   border:@w @c @s
}
如果你不想单独处理每一个参数的话就可以像这样写:
.border_arg(@w:30px,@c:red,@ww:solid){
border:@arguments;
/*包含所有参数*/
}
.test_arguments{
.border_arg(40px);     
/*则只把@w的值改为40px,其余照搬*/
}
 less 避免编译 
用符号 ~   
eg:
 ~‘calc(300px-30px)’
,less直接把calc(300px-30px)给到css文件,在被浏览器调用时,浏览器自己运算。
!important 样式优先级别最高 
可以把封装的东西放到一个单独的 less里面,只需要在main.less主文件里面 @import 加文件名 xx 可以省略后缀名. eg: @import a
加载css需要 @import(less)'xxx.css'  @import  写在哪里  编译之后 css内容 就会出现在哪里

 
posted @ 2017-09-05 21:22  sunmarvell  阅读(161)  评论(0编辑  收藏  举报