該系列:
其他待更新...
翻譯自less官方文件lesscss.org/features/#v…
變數
@width: 10px;
@height: @width + 10px;
#header {
width: @width;
height: @height;
}
複製程式碼
編譯為
#header {
width: 10px;
height: 20px;
}
複製程式碼
變數還可以用在其他地方,比如選擇器名稱,屬性名稱,urls地址,@import匯入語句
// Variables
@my-selector: banner;
@images: "../img";
@property: font-weight;
// Usage
.@{my-selector} {
@{property}: bold;
line-height: 40px;
margin: 0 auto;
background: url("@{images}/white-sand.png");
}
複製程式碼
編譯為
.banner {
font-weight: bold;
line-height: 40px;
margin: 0 auto;
background: url("../img/white-sand.png");
}
複製程式碼
引用變數的變數
@primary: green;
@secondary: blue;
.section {
@color: primary;
.element {
color: @@color;
}
}
複製程式碼
編譯為
.section .element {
color: green;
}
複製程式碼
惰性求值,變數不用非得在使用之前宣告,有點類似js的變數提升,當一個變數重複宣告兩次時,從當前作用域開始向上找,以最近作用域最後宣告的為準
.lazy-eval {
width: @var;
@a: 9%;
}
@var: @a;
@a: 100%;
複製程式碼
編譯為
.lazy-eval {
width: 9%;
}
複製程式碼
引用css屬性值作為變數(v3.0.0),當遇到多個重複屬性值時,規則同惰性求值
.block {
color: red;
.inner {
background-color: $color;
}
color: blue;
}
複製程式碼
編譯為
.block {
color: red;
color: blue;
}
.block .inner {
background-color: blue;
}
複製程式碼
由於類似變數提升,惰性求值的特性,能夠實現改變某些庫預設變數的功能
// library
@base-color: green;
@dark-color: darken(@base-color, 10%);
// use of library
@import "library.less";
@base-color: red;
複製程式碼
此時base-color就變為red,而dark-color就變為dark red了,這在實現主題顏色時很有用