Less 编译器

css预处理

css是标记语言,不是编程语言,所以不具备编程语言的特点(编程语言的特点:变量存储、判断和循环的逻辑操作、函数的封装继承和多态...),如果具备以上编程语言的特点,开发css的时候将会非常的方便

css预处理编译语言的宗旨就是把css变为编程语言来开发,提高开发效率,实现组件化的封装

less
sass
stylus
…
之所以叫做预编译语言是因为:我们使用上述语言编写完成的样式代码,浏览器不能识别,我们需要把代码编译成为正常能识别的css代码才可以,所以叫做预编译复制代码

less的使用

Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护、方便制作主题、扩充。

Less 可以运行在 Node、浏览器和 Rhino 平台上。网上有很多第三方工具帮助你编译 Less 源码。

安装less
 npm install -g less复制代码
Less 编译器
lessc styles.less > styles.css
若要输出压缩过的 CSS,只需添加 -x 选项
lessc styles.less > styles.min.css -x复制代码
变量
//less也是来写样式的跟css一样都是实现样式的写法,只不过语法不同,它涵盖了一些JS的思想

//变量
//在JS中var color="#ff6700";
//在less中变量前面加上@
@color:#ff6700;
.box1{
    color: @color;
}
//还可以 以变量的名定义定义为变量
@word:"I love you";
@c:#ff5700;
@var:"word";//定义了一个变量var赋值为一个变量名word
@col:"c";//定义了一个变量var赋值为一个变量名c
#p1:after{
    //content: @word;
    content: @@var;//@(@var)->@word->"I love you"
    color: @@col;
}复制代码
混合类
//混合类
.class1{
    font-size: 20px;
    width: 200px;
    height: 50px;
    border: 1px solid red;  
}
.box1{
    .class1;
    background-color: #0000FF;
}

//带参数混合
//在less中可以像JS函数一样定义一个带参数的属性集合

.radius(@rad){
    border-radius: @rad;
    -webkit-border-radius: @rad;
    -moz-border-radius: @rad;
    -ms-border-radius: @rad;
    -o-border-radius: @rad;
}
.box1{
    .radius(10px);//@rad=10px;
    border: 1px solid #0000FF;
}

//给参数赋默认值
.font(@size:18px){
    font-size:@size ;
}
.menu li{
    .font();
}

//@arguments:包含了所有传进来的参数
.bor(@x,@y,@z){
    border: @arguments;
}
.wh(@w:100px,@h:30px){
    width: @w;
    height: @h;
}
.menu li{
    .wh(200px);
    .bor(3px ,solid ,green);
}
.box-shadow(@x:0,@y:0,@blur:4px,@color:#ccc){
    box-shadow: @arguments;
    color: @color;
    border-radius: @blur;
}
span{
    display: block;
    .box-shadow(5px,5px);
    .wh(150px,45px);
}复制代码
匹配模式和引导表达式

//匹配模式和引导表达式
.min(drak,@color){
    color: darken(@color,20%);
    //将颜色加深20%
}
.min(light,@color){
    color: lighten(@color,20%);
    //将颜色变浅20%
}
.min(@_,@color){
    display: block;
}
@switch1:drak;
@switch2:light;

span{
    //.min(@switch1,#ddd);
    //.min(drak,#ddd);@color:#ddd
    //.min(@switch2,#ddd);
    //@_,接受任意值,你传什么值他都会执行;
    .min(@word,#ccc);
}复制代码
注释
//注释
/*
 注释
 * color函数
 * 1. lighten(@color,10%):
 * 意思:return a color which is 10% lighter than @color
 * 2. darken(@color,10%);
 * 意思:return a color which is 10% draker than @color
 * 3. statuate(@color,10%);//增加饱和度
 * 意思:return a color which is 10% statuated than @color
 * 4. destatuste(@color,10%);//减少饱和度,褪色
 * 5. fadein(@color,10%)
 * 6. fadeout(@color,10%)
 * 7. fade(@color,50%)
 * 8. spin(@color,10)
 * 9. spin(@color,-10)
 * 10. mix(@color1,@color2);混合
 * 
 * 
 * 提取颜色信息
 * hue(@color):返回当前颜色的色调
 * staturation(@color):返回当前颜色的饱和度
 * lightness(@color):返回当前颜色的亮度(浅的度数)
 * */
div{
    width: 100px;
}复制代码
.wh(@w:100px,@h:50px){
    width: @w;
    height: @h;
}
//when
.mixin(@a) when(lightness(@a)>=50%){
    background-color: black;
}
.mixin(@a) when(lightness(@a)<50%){
    background-color: whitesmoke;
}
.box1{
    .wh();
    .mixin(#ddd);
}

.mn(@w,@h) when(@w>@h){
    width: @w;
    height: @h;
}
.mn(@w,@h) when(@w<=@h){
    width: @h;
    height: @w;
}
.box1{
    //.mn(100px,200px);
    .mn(200px,50px)
}

.m(@x) when(@x=red){
    color: @x;
}
.m(@x) when(@x=green){
    color: @x;
}
p{
    //.m(green)
    .m(whitesmoke);//没有满足条件的根本不会执行
}
/*
 注意:
 *在less中比较运算:
 *  >  <  >=  <=  =
 * */
//基于值类型的判断进行匹配,可以使用JS函数判断
/*
 * isnumber
 * iscolor
 * isstring
 * isurl
 * iskeyword
 * 判断单位
 * ispixel  px
 * ispercentage  pt
 * isem   em
 * */

.n(@a) when(iscolor(@a)){
    color: @a;
}
.n1(@b) when(isstring(@b)){
    content: @b;
}
.n2(@c) when(ispixel(@c)){
    width: @c;
}
.box2 span{
    .n(red);
    }
.box2:before{
    //.n1(red)
    .n1("哈哈哈哈哈")
}

.box2{
    .n2(100px);
}复制代码
嵌套规则
//嵌套规则
//1.直接嵌套表示的是后代关系
//2.如果想表达都是当前选择器加一个&来表示(一般都是伪元素伪类用的比较多)
.wh(@w:100px,@h:100px){
    width: @w;
    height: @h;
}
div{
    .wh();
    p{
       .wh(100px,20px);
    }
}
.box{
    .wh();
    &:hover{
        background-color: wheat;
    }
}

span{
    display: block;
    .wh(50px,20px);
    &#span1{
        .wh();
        background-color: #87CEEB;
    }
}复制代码
计算功能:任何颜色,变量都可以参与运算
//计算功能:任何颜色,变量都可以参与运算
@base:5%;
@filter:@base*2;//10%
@other:@base*4+@filter;//30%
.box{
    color: #FFFF00;
    background-color: @filter+#111;
    height: 100%/2+@other;
}

@var:10px + 5;
#box1{
    width: (@var + 20)*2;
    height: (@var - 5)*3;
    p{
        height: (@var + 5)/2;
        background-color: #101010+#000111;
        border: @var - 5 solid #0000ff;
    }
}

//less也支持部分Math函数
//round(1.67)->2
//ceil(2.1)->3
//floor(2.9)->2
//peercentage(0.5)->50%转为百分数的函数
#s{
    width: 100px;
    height: 100px;
    border-radius: percentage(0.5);
}复制代码
命名空间
//命名空间
#box1{
    .p1{
        width: 100px;
        height: 30px;
        border: 1px solid red;
        &:hover{
            color: #FF0000;
        }
    }
}
.p2{
    color: #ccc;
    #box1>.p1;
}复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值