一、变量

@nice: #5b83ad
@light-blue: @nice + #111;

#header {
    background-color: @nice;
}

二、混合

定义一个类的样式

示例1:
    .bordered {
        border-top: 1px black solid;
        border-bottom: 1px black solid;
    }

    加载到#menu a内
    #menu a {
      color: #111;
      .bordered;
    }

    .post a {
      color: red;
      .bordered;
    }


示例2:混合带参数
    .border-radius(@values) {
          -webkit-border-radius: @values;
        -moz-border-radius: @values;
        border-radius: @values;
    }

    .box-radius{ width: @filler; heigth: 30px; border: 1px #ccc solid; .border-radius(4px) }


示例3:
    .a, #b {
        color: red;
    }
    .mixin-class {
        .a();
    }

    输出:
    .a, #b {
        color: red;
    }
    .mixin-class {
        color: red;
    }


示例4:
    .my-mixin {
        color: black;
    }
    .my-other-mixin() {
        background: white;
    }
    .class {
        .my-mixin;
        .my-other-mixin;
    }

    输出:
    .my-mixin {
        color: black;
    }
    .class {
        color: black;
        background: white;
    }

三、嵌套

示例1:

    #header{
        color: black;

        .navigation {
            font-size: 12px;
        }
    }

    output:

        #header {
            color: black;
        }
        #header .navigation {
            font-size: 12px;
    }

示例2:a 的 hover

    .box {
        a {
            color: red;
            $:hover {
                color: green;
            }
        }
    }

    output:
    .box a { color: red; }
    .box a:hover { color: green; }


示例3:arguments 可以将所有参数显示到值中

    .border-arg(@width, @color, @style){
        border: @arguments;            // 这里使用@arguments就相当于 @width @color @style
    }

四、运算

@base: 5%;
@filler: @base * 2;
.boxA { width: @filler; height: 20px; background-color: #c3c3c3; }

五、匹配模式

// 设置匹配
.trangle(top, @width, @color){
    border-width: @width; 
    border-color: transparent transparent @color transparent;
    border-style: dashed dashed solid dashed
}

.trangle(left, @width, @color){
    border-width: @width; 
    border-color: transparent @color transparent transparent;
    border-style: dashed dashed solid dashed
}

.trangle(right, @width, @color){
    border-width: @width; 
    border-color: transparent transparent transparent @color;
    border-style: dashed dashed solid dashed
}

.trangle(bottom, @width, @color){
    border-width: @width; 
    border-color: @color transparent transparent transparent;
    border-style: dashed dashed solid dashed
}

/* 匹配模式 */
.trangleL {
    width: 0; height: 0; overflow: hidden;
    .trangle(right, 18px, red)        /* 这里调用的right 就是右三角 */
}
<div class="trangleL"></div>

六、作用域 Scope

@var: red;
#page {
    @var: white;
    #header {
        color: @var; // white
    }
}

编译后:
#page .header {
    color: white;
}

七、注释

/* */    会被编译,输出会显示注释
//         不会被编译,输出不会显示注释

八、importe

导入less文件: @import 'libary';        不用加.less
导入css文件:     @import 'typo.css';    

九、url

@images: "../img";

// 用法
body {
    color: #444;
    background: url("@{images}/white-sand.png");
}

十、循环

.loop(@counter) when (@counter > 0) {        // 循环使用 定义函数名(参数) when (条件)
    .loop((@counter - 1));        // 每一次减1
    width: (10px * @counter);     // code for each iteration
}
div {
    .loop(3); // launch the loop
}

output:
div {
    width: 10px;
    width: 20px;
    width: 30px;
}

十一、合并

.mixin() {
    box-shadow+: inset 0 0 10px #555;
}
.myclass {
    .mixin();
    box-shadow+: 0 0 20px black;
}


.myclass {
    box-shadow: inset 0 0 10px #555, 0 0 20px black;
}

十二、避免编译使用 “~”

.text {
    width: ~(30px + 30px);        // 这里就不会被计算,而直接输出width: 30px + 30px;
}

十三、与构建工具结合

可以使用gulp 或 webpack 来进行编译

参考资料

http://less.bootcss.com
http://www.wtoutiao.com/p/15bzfg3.html
http://www.w3cplus.com/css/sass-vs-less-vs-stylus-a-preprocessor-shootout.html
http://www.w3cplus.com/preprocessor/architecture-sass-project.html