less变量

139 阅读2分钟

变量

对变量的认识

变量定义使用 @ 符,不能以数字开头,不能包含特殊符号,不能使用关键字如:media,区分大小写 @color 和 @Color 是两个变量。

@color: red;
@bg: #000;
@width: 200px;

.my-div {
    width: @width;
    background-color: @bg;
    color: @color;
}

上述代码编译为:

.my-div {
    width: 200px;
    background-color: #000;
    color: red;
}

变量插值

变量也可用于选择器,属性,URL,@import语句。

@my-selector: banner;
@my-elm: color;
@my-url: "../img"
@my-import-src: "../src/less";

// 变量插值用在选择器
.@{my-selector} {
    width: 200px;
    height: 200px;
    // 用在属性上
    @{color}: red;
    // 用在路径上
    background-image: url("@{my-url}/app.jpg");
}

// 用在@import语句上
@import "@{my-import-src}/index.less";

编译为:

.banner {
    width: 200px;
    height: 200px;
    color: red;
    background-image: url("../img/app.jpg");
}

@import "../src/less/index.less";

转义(了解即可)

转义可以将任何字符串做为属性和变量值,~"anything" 或 ~'anything' 中的任何内容都按原样使用,除了插值之外没有任何变化。在我的编译器中使用转义会报错,不知道你们的编译器能不能用!

@my-minwidth: ~"(min-width: 740px)";

// 转义的旧写法
.my-div {
    @media screen and @my-minwidth {
        background: red;
    }
}

// less 3.5开始之后转义的写法
@my-minwidth: (min-width: 740px);

可变变量

你可以使用另一个变量定义变量的名称。

@primary: pink;
@color: primary;

.my-div {
    color: @@color;
}

// 编译为:
.my-div {
    color: pink;
}

变量延迟声明

变量不必在使用前声明, 为了性能方面优化.

// 第一种
.my-div {
    width: @var;
}
@var: @width;
@width: 200px;

// 第二种
.my-div {
    width: @var;
    @width: 200px;
}
@var: @width;
@width: 300px;

都编译为:

.my-div {
    width: 200px;
}

把属性做为变量

你可以使用$prop把属性做为变量, 语法:$属性名; 只能在把自己规则集中的属性做为变量,不能跨规则集;

.my-div {
    width: 200px;
    height: $width;
    color: pink;
    background-color: $color;
}

默认变量

如果有两个变量名相同的变量,后定义的变量会覆盖先定义的变量,从外部导入less文件中也有相同的变量,在导入语句后定义的变量会覆盖前面的变量,在导入语句后面定义的变量会覆盖导入文件中的变量

// library.less
@base-color: pink;

// index.less
@import "library"
@base-color: red;

.my-div {
    color: @base-color;
}

// 编译为:
.my-div {
    color: red;
}