Less變量


Less變量

定義變量

Less 中的變量和其他編程語言一樣,可以實現值的復用,同樣它也有作用域(scope)。簡單的講,變量作用域就是局部變量和全局變量的概念。

Less 中,變量作用域采用的是就近原則,換句話說,就是先查找自己有沒有這個變量,如果有,就取自己的變量,如果沒有,就查找父元素,依此類推。先看一個簡單的例子,Less 文件如下:

  1. @width : 20px;
  2.  #homeDiv  {
  3.    @width : 30px;
  4.    #centerDiv  {
  5.        width : @width;  // 此處應該取最近定義的變量 width 的值 30px
  6.    }
  7.  }
  8.  #leftDiv {
  9.      width : @width;  // 此處應該取最上面定義的變量 width 的值 20px
  10. }

編譯后的CSS代碼為:

  1. #homeDiv #centerDiv {
  2.     width: 30px;
  3. }
  4. #leftDiv {
  5.     width: 20px;
  6. }

對於程序開發人員來說,變量應該是最熟悉不過的概念了。如果多次重復使用一個信息,將它設置為一個變量,就可以在代碼中重復引用。這不僅避免重復定義,還能使代碼更容易維護。

Less中,變量由變量名稱和值組成。變量名以 @ 為前綴,由字母、數字、_和-組成,變量名稱和值之間用冒號隔開。如:

  1. /* 定義變量 */
  2. @color: #4d926f;
  3. /* 應用到元素中 */
  4. header {
  5.   color: @color;
  6. }
  7. h2 {
  8.   color: @color;
  9. }

上面的代碼定義了一個變量 @color,並給它賦值為 #4d926f。然后,就可以在選擇器 header 和 h2 中反復使用它,而不必重復定義。編譯后的CSS代碼為:

  1. header {
  2.   color: #4d926f;
  3. }
  4. h2 {
  5.   color: #4d926f;
  6. }

從上面的代碼可以看出,變量是 VALUE(值)級別的復用,可以將相同的值定義成變量,來統一管理起來。當需要調整樣式時,只需要修改相應變量的值就可以了,非常方便。因此,變量適用於定義主題,可以將背景顏色、字體顏色、邊框屬性等常規樣式進行統一定義,不同的主題只需要定義不同的變量文件就可以了。

當然,變量也同樣適用於 CSS RESET(重置樣式表),在 Web 開發中,往往需要屏蔽瀏覽器的默認樣式,就可以使用 Less的變量特性。這樣,就可以在不同項目間重用樣式表,我們僅僅需要在不同的項目樣式表中,根據需求重新給變量賦值即可。

不僅可以直接在屬性值中使用變量,還可以用類似 @{name} 的結構,以“插值”的方式在選擇器名、屬性名、URL、import、媒體查詢中使用變量。在編譯時,變量將被替換為它們相應的值。

變量插值

1)選擇器名插值

Less選擇器名稱中可以引用任何變量。如:

  1. @head: h;
  2. .@{head}2 {
  3.   font-size: 16px;
  4. }

編譯后的CSS代碼為:

  1. .h2 {
  2.   font-size: 16px;
  3. }

2)屬性名插值

Less屬性名稱中可以引用任何變量。如:

  1. @my-property: color;
  2. .myclass {
  3.   background-@{my-property}: #81F7D8;
  4. }

編譯后的CSS代碼為:

  1. .myclass {
  2.   background-color: #81F7D8;
  3. }

3)URL插值

變量還可以用來保存URL,並在 url() 中使用它。如:

  1. @host: "http://www.waibo.wang/";
  2. h2 {
  3.   color: @color;
  4.   background: url("@{host}img/bg.png");
  5. }

編譯后的CSS代碼為:

  1. h2 {
  2.   color: #f00;
  3.   background: url("http://www.waibo.wang/img/bg.png");
  4. }

4)import插值

import語句中,可以使用保存路徑的變量。如:

  1. @host: "http://www.waibo.wang/";
  2. @import "@{host}/reset.less";

5)媒體查詢插值

如果你希望在media query中使用Less變量,你可以直接使用普通的變量方式。因為“~”后面的值是不被編譯的,所以可以用作media query的參數。如:

  1. @singleQuery: ~"(max-width: 480px)";
  2. @media screen, @singleQuery { 
  3.     div { 
  4.     width:2000px; 
  5.     } 
  6. } 

編譯后的CSS代碼為:

  1. @media screen, (max-width: 480px) {
  2.   div {
  3.     width: 2000px;
  4.   }
  5. } 

變量的作用域

 

Less 中的變量和其他編程語言一樣,可以實現值的復用,同樣它也有作用域(scope)。簡單的講,變量作用域就是局部變量和全局變量的概念。

Less 中,變量作用域采用的是就近原則,換句話說,就是先查找自己有沒有這個變量,如果有,就取自己的變量,如果沒有,就查找父元素,依此類推。先看一個簡單的例子,Less 文件如下:

  1. @width : 20px;
  2.  #homeDiv  {
  3.    @width : 30px;
  4.    #centerDiv  {
  5.        width : @width;  // 此處應該取最近定義的變量 width 的值 30px
  6.    }
  7.  }
  8.  #leftDiv {
  9.      width : @width;  // 此處應該取最上面定義的變量 width 的值 20px
  10. }

編譯后的CSS代碼為:

  1. #homeDiv #centerDiv {
  2.     width: 30px;
  3. }
  4. #leftDiv {
  5.     width: 20px;
  6. }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM