Less變量
定義變量
Less 中的變量和其他編程語言一樣,可以實現值的復用,同樣它也有作用域(scope)。簡單的講,變量作用域就是局部變量和全局變量的概念。
Less 中,變量作用域采用的是就近原則,換句話說,就是先查找自己有沒有這個變量,如果有,就取自己的變量,如果沒有,就查找父元素,依此類推。先看一個簡單的例子,Less 文件如下:
@width : 20px;
?#homeDiv ?{
?? @width : 30px;
?? #centerDiv? {
?????? width : @width;? // 此處應該取最近定義的變量 width 的值 30px
?? }
?}
?#leftDiv {
???? width : @width;? // 此處應該取最上面定義的變量 width 的值 20px
}
編譯后的CSS代碼為:
#homeDiv #centerDiv {
??? width: 30px;
}
#leftDiv {
??? width: 20px;
}
對于程序開發人員來說,變量應該是最熟悉不過的概念了。如果多次重復使用一個信息,將它設置為一個變量,就可以在代碼中重復引用。這不僅避免重復定義,還能使代碼更容易維護。
Less中,變量由變量名稱和值組成。變量名以 @ 為前綴,由字母、數字、_和-組成,變量名稱和值之間用冒號隔開。如:
/* 定義變量 */
@color: #4d926f;
/* 應用到元素中 */
header {
? color: @color;
}
h2 {
? color: @color;
}
上面的代碼定義了一個變量 @color,并給它賦值為 #4d926f。然后,就可以在選擇器 header 和 h2 中反復使用它,而不必重復定義。編譯后的CSS代碼為:
header {
? color: #4d926f;
}
h2 {
? color: #4d926f;
}
從上面的代碼可以看出,變量是 VALUE(值)級別的復用,可以將相同的值定義成變量,來統一管理起來。當需要調整樣式時,只需要修改相應變量的值就可以了,非常方便。因此,變量適用于定義主題,可以將背景顏色、字體顏色、邊框屬性等常規樣式進行統一定義,不同的主題只需要定義不同的變量文件就可以了。
當然,變量也同樣適用于 CSS RESET(重置樣式表),在 Web 開發中,往往需要屏蔽瀏覽器的默認樣式,就可以使用 Less的變量特性。這樣,就可以在不同項目間重用樣式表,我們僅僅需要在不同的項目樣式表中,根據需求重新給變量賦值即可。
不僅可以直接在屬性值中使用變量,還可以用類似 @{name} 的結構,以“插值”的方式在選擇器名、屬性名、URL、import、媒體查詢中使用變量。在編譯時,變量將被替換為它們相應的值。
變量插值
1)選擇器名插值
Less選擇器名稱中可以引用任何變量。如:
@head: h;
.@{head}2 {
? font-size: 16px;
}
編譯后的CSS代碼為:
.h2 {
? font-size: 16px;
}
2)屬性名插值
Less屬性名稱中可以引用任何變量。如:
@my-property: color;
.myclass {
? background-@{my-property}: #81F7D8;
}
編譯后的CSS代碼為:
.myclass {
? background-color: #81F7D8;
}
3)URL插值
變量還可以用來保存URL,并在 url() 中使用它。如:
@host: "http://www.waibo.wang/";
h2 {
? color: @color;
? background: url("@{host}img/bg.png");
}
編譯后的CSS代碼為:
h2 {
? color: #f00;
? background: url("http://www.waibo.wang/img/bg.png");
}
4)import插值
import語句中,可以使用保存路徑的變量。如:
@host: "http://www.waibo.wang/";
@import "@{host}/reset.less";
5)媒體查詢插值
如果你希望在media query中使用Less變量,你可以直接使用普通的變量方式。因為“~”后面的值是不被編譯的,所以可以用作media query的參數。如:
@singleQuery: ~"(max-width: 480px)";
@media screen, @singleQuery {?
??? div {?
??? width:2000px;?
??? }?
}?
編譯后的CSS代碼為:
@media screen, (max-width: 480px) {
? div {
??? width: 2000px;
? }
}?
變量的作用域
?
Less 中的變量和其他編程語言一樣,可以實現值的復用,同樣它也有作用域(scope)。簡單的講,變量作用域就是局部變量和全局變量的概念。
Less 中,變量作用域采用的是就近原則,換句話說,就是先查找自己有沒有這個變量,如果有,就取自己的變量,如果沒有,就查找父元素,依此類推。先看一個簡單的例子,Less 文件如下:
@width : 20px;
?#homeDiv ?{
?? @width : 30px;
?? #centerDiv? {
?????? width : @width;? // 此處應該取最近定義的變量 width 的值 30px
?? }
?}
?#leftDiv {
???? width : @width;? // 此處應該取最上面定義的變量 width 的值 20px
}
編譯后的CSS代碼為:
#homeDiv #centerDiv {
??? width: 30px;
}
#leftDiv {
??? width: 20px;
}