less 低成本高回报-带逻辑的层叠样式表

★变量

用@定义

@cg:green;
@cr:red;
@cy:yellow;

使用:

.passage{
    color:@cg;
    background-color:@cr;
    border-color:@yellow;
}

编译后:

.passage{
    color:green;
    background-color:red;
    border-color:yellow;
}

★运算

变量可以进行简单运算

★注释

/***********正常注释************/

//其他语言习惯注释 编译时去掉 只被保留在.less文件中

★任性!不想被编译

与其说任性不如说微软比较任性 即使再NB也必须迁就使用微软的庞大用户群 

有一些属性 比如滤镜(类似webkit中的opacity透明度)less不能识别 也可能以后会出现less识别不了的属性  需要处理

使用波浪线加一对单引号可以包含不想被编译的内容 如   ~’i do not want to get translated !’

★函数(混合1)

为类附加参数 

定义:

.border-radius(@radius:10px,@style:solid){

    -webkit-border-radius:@radius @style #313131;
    -moz-border-radius:@radius @style #313131;
    -o-border-radius:@radius @style #313131;
    -ms-border-radius:@radius @style #313131;
    border-radius:@radius @style #313131;

}

使用:

直接使用

.border-radius();//默认使用圆角10px, 样式直线

编译后:

.border-radius{

    -webkit-border-radius:10px solid #313131;
    -moz-border-radius:10px solid #313131;
    -o-border-radius:10px solid #313131;
    -ms-border-radius:10px solid #313131;
    border-radius:10px solid #313131;

}

或使用改变变量

.border-radius(30px, dashed);//使用圆角30px,样式虚线

编译后:

.border-radius{

    -webkit-border-radius:30px dashed #313131;
    -moz-border-radius:30px dashed #313131;
    -o-border-radius:30px dashed #313131;
    -ms-border-radius:30px dashed #313131;
    border-radius:30px dashed #313131;

}

★混合2

整个类的属性当做变量添加到新类中 并 附加其他属性

.img(@width:100px, @height:60px, @size:contain){
    
    width:@width;
    height:@height;
    background-repeat:no-repeat;
    background-size:@size;

}

使用

.img1{

    .img();
    
    background:url(…);

}

编译后:

.img1{

    width:100px;
    height:60px;
    background-repeat:no-repeat;
    background-size:contain;
    background:url(…);

}

★混合3

无键参数

//三个动画

@keyform ani1{
    …
}

@keyform ani2{
    …
}

@keyform ani3{
    …
}

//使用动画的三个类

.box1(ani1, @time:8s, @locus:linear){//使用动画1 轨迹直线
    animation:ani1 @time @locus infinite running;
}

.box2(ani2, @time:10s, @locus:ease){//使用动画2 轨迹先快后慢再快
    animation:ani1 @time @locus infinite running;
}

.box3(ani3, @time:20s, @locus:cubic-bezier(0.1,0.2,0.5,1)){//使用动画3 轨迹自定义贝塞尔曲线
    animation:ani1 @time @locus infinite running;
}

//——————————————————————

.box(@_, @time,@locus){
animation-name:@_;
}

使用

.i-box{

    .box(ani1,8s,linear);

}

即使用了box1的属性:动画1 轨迹直线 

值得注意 虽然.box中的@time和@locus在.box中没用 但必须加上 

如果@_没有匹配到 则会出现只有@time和@locus被编译

如下

.i-box{

   animation: 8s linear infinite running;//没有动画名 报错!!!

}

★嵌套

&表示父元素

.list{

    li{

list-style:none;
margin:0;
padding:0;

        a{

            font-size:#313131;opacity:0.5;

   &:hover{ opacity:1; }

        }

    }

}

编译后:

.list li{

    list-style:none;
    margin:0;
    padding:0;

}

.list li a{

    font-size:#313131;opacity:0.5;

}

.list li a:hover{

    opacity:1;

}

★超级懒B头顶称号arguments

@arguments可以代表所有参数

.box(@border-width:10px,@border-color:green,@border-line-style:solid){

    border:@arguments;

}

使用:

.box();或.box(20px);

★important的继承

加!important的类 其中包含的属性都会添加important属性 可以用作测试

发表评论

电子邮件地址不会被公开。 必填项已用*标注