Hello less

less

less是一种动态样式语言,属于css预处理器的范畴,它扩展了css语言,增加了变量、mixin、函数等特性,使css更易维护和扩展

less既可以在客户端上运行,也可以借助node.js在服务端运行。

less中的注释

以//开头的注释不会编译到css文件中

以/**/包裹的注释会被编译到css文件中

less中的变量

使用@来声明一个变量:@pink: pink;

  • 作为普通属性值来使用:直接使用@pink
  • 作为选择器和属性名:#@{selector的值}的形式 (很少使用)
  • 作为url:@{url}
  • 变量的延迟加载(less中的变量是块级作用域)
@color: pink;
@m:margin;
@selector:#wrap;
@{selector}{
    @{m}:0;
}
//延迟加载
@var: 0;
.class {
    @var: 1;
    .brass {
        @var: 2;
        @three: @var; //3
        @var: 3;
    }
    one: @var;
}
嵌套规则
  • 基本嵌套规则

  • &表示平级 中间无空格

#wrap {
    .inner {
        &:hover{
            background: pink;
        }
    }
}
less的混合

混合就是将一系列属性从一个规则集引入到另一个规则集的方式

  1. 普通混合

    //不加()编译完会编译到css中
    .juzhong {
        text-align: center;
    }
    #wrap {
        .inner{
            .juzhong;
        }
        .inner2{
            .juzhong;
        }
    }
    
  2. 不带输出的混合

    //加()编译完不会编译到css中
    .juzhong() {
        text-align: center;
    }
    #wrap {
        .inner{
            .juzhong;
        }
        .inner2{
            .juzhong;
        }
    }
    
  3. 带参数的混合

    .juzhong(@w,@h,@color) {
        text-align: center;
        width:@w;
        height:@h;
        color:@color;
    }
    #wrap {
        .inner{
            .juzhong(100px, 100px, pink);
        }
        .inner2{
            .juzhong(200px, 200px, deeppink);
        }
    }
    
  4. 带参数并且有默认值的混合

    .juzhong(@w:10px,@h:10px,@color:pink) {
        text-align: center;
        width:@w;
        height:@h;
        color:@color;
    }
    #wrap {
        .inner{
            .juzhong(100px, 100px, pink);
        }
        .inner2{
            .juzhong(200px, 200px, deeppink);
        }
    }
    
  5. 带多个参数的混合

  6. 命名参数

    .juzhong(@w:10px,@h:10px,@color:pink) {
        text-align: center;
        width:@w;
        height:@h;
        color:@color;
    }
    #wrap {
        .inner{
            .juzhong(@color: pink);
        }
        .inner2{
            .juzhong(@color: deeppink);
        }
    }
    
  7. 匹配模式

    //03.less
    @import "./triangle.less";
        #wrap .sjx{
            .triangle(L, 40px, red);
    }
    
    //triangle.less
    .triangle(L,@w,@c){
        border-color: transparent @c transparent transparent;
    }
    
    //03.less
    @import "./triangle.less";
        #wrap .sjx{
            .triangle()
            .triangle(L, 40px, red);
    }
    //triangle.less
    .triangle(){
        width: 0px;
    }
    .triangle(L,@w,@c){
        border-color: transparent @c transparent transparent;
    }
    
    //03.less
    @import "./triangle.less";
        #wrap .sjx{
            .triangle(L, 40px, red);
    }
    //triangle.less
    .triangle(@_){
        width: 0px;
    }
    .triangle(L,@w,@c){
        border-color: transparent @c transparent transparent;
    }
    
  8. arguments变量

    .border(@1,@2,@3){
        border:@arguments;
    }
    #wrap .sjx{
        .border(1px,solid,black)
    }
    
    //编译后
    #wrap .sjx{
        .border(1px,solid,black)
    }
    
less运算

在less中可以进行加减乘除的运算

@conversion-1: 5cm + 10mm; // 6cm
@conversion-2: 2 - 3cm - 5mm; // -1.5cm
@conversion-3: 3.1 * 2cm; // 6.2cm
@conversion-4: 4px / 2; // 4px / 2

// conversion is impossible
@incompatible-units: 1cm - 1px; // 0.97354167cm

// example with variables
@base: 5%;
@filler: @base * 2; // 10%
@other: @base + @filler; // 15%

@color: #224488 / 2; // #112244
background-color: #112244 + #111; // #223355
less继承
  • 继承可让多个选择器应用同一组属性,最终编译为并集选择器,其性能比混合高,但灵活性比混合低
//less
nav ul {
  &:extend(.inline);
  background: blue;
}
.inline {
  color: red;
}

//css
nav ul {
  background: blue;
}
.inline,
nav ul {
  color: red;
}

Extend “all”
可理解为把 all 前的选择器出现的地方全都替换为 extend 前的选择器,即把 .test 替换为 .replacement 生成一个新的选择器应用样式,且不破坏原有的选择器

//less
.a.b.test,
.test.c {
  color: orange;
}
.test {
  &:hover {
    color: green;
  }
}

.replacement:extend(.test all) {
}

//css
.a.b.test,
.test.c,
.a.b.replacement,
.replacement.c {
  color: orange;
}
.test:hover,
.replacement:hover {
  color: green;
}
避免编译

通过加引号可以避免 Less 编译,直接把内容输出到 CSS 中

//less
.banner .inline .header {
  width: '100px + 100px';
  height: 100px + 100px;
}

//css
.banner .inline .header {
  width: '100px + 100px';
  height: 200px;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值