less新手入門(三) 作為函數使用的Mixin、@import 導入指令 、@import 導入選項


五、作為函數使用的Mixin
  • 從mixin返回變量

在mixin中定義的所有變量都是可見的,並且可以在調用者的作用范圍中使用(除非調用者用相同的名稱定義它自己的變量)。

.mixin(){ @width:100%; @height:200px;
} .caller{ .mixin(); width: @width; height: @height;
}

輸出:

.caller { width: 100%; height: 200px;
}

因此,在mixin中定義的變量可以作為其返回值。這使我們可以像函數一樣使用 .mixin 。

.average(@x, @y){ @average:((@x + @y )/2);
} div{ .average(16px, 50px); padding: @average;
}

輸出:

div { padding: 33px;
}

 

六、@import  導入指令 
  • 從其他樣式表導入樣式

在標准CSS中,@ import規則必須優於所有其他類型的規則。但Less.js不關心@ import語句在代碼中的具體位置。例如:

.foo { background: #900;
} @import "this-is-valid.less";

6.1 文件擴展名 - File extensions

@import 可以根據文件擴展的不同來不同地處理語句

  • 如果文件有 .css擴展名,將被視為css,@ import語句規則保持不變 (具體見下面的描述)。
  • 如果它有任何其他擴展名,它將被視為 less進行導入。
  • 如果它沒有擴展,.less將被添加上,它將會作為一個less文件被添加。
@import "foo";      // 作為foo.less 被導入
@import "foo.less"; // 作為foo.less 被導入
@import "foo.php";  // foo.php 作為 a less file被導入
@import "foo.css";  // 保持原有的聲明

可以使用以下選項覆蓋該行為

 

七、導入選項

Less為CSS @import CSS at- rule提供了幾個擴展,以提供更多的靈活性,使您能夠處理外部文件。

語法:@import (keyword) "filename";

下面這些指令可以使用:

  • reference 使用 less 文件,但不要輸出它
  • inline 在輸出中包含源文件,但不處理它
  • less 無論文件擴展名是什么,將文件視為一個 less 文件
  • css  無論文件擴展名是什么,將文件視為一個css 文件
  • once 只引入這個文件一次(這是默認行為)
  • multiple 引入這個文件多次

 

7.1 reference

使用@ import(reference) 導入外部文件,但是,除非引用,否則不將導入的樣式添加到已編譯的輸出中。

例如: 

@import (reference) "foo.less";

reference是Less語言中最強大的特性之一,想象一下,在導入的文件中,引用的每個指示符和選擇器都帶有一個引用標志,導入是正常的,但是當生成CSS時,"reference"選擇器(以及任何包含reference 選擇器的媒體查詢)都不是輸出。除非引用樣式用作 mixins 或 extended,否則引用樣式不會出現在生成的CSS中。

另外,根據使用的方法(mixin或extend),reference會產生不同的結果:

  • extend  當一個選擇器被extended(擴展)時  ,只有新的選擇器被標記為沒有被引用referenced,並且它被拉入到引用@ import語句的位置。
  • mixins  當 reference 樣式用作隱式mixin時,它的規則是混合的,標記為“not reference”,並在被引用的位置顯示為正常

例子:

這允許您能從一個庫中提取特定的、有針對性的樣式,例如bootstrap通過做類似的事情來引導

.navbar:extend(.navbar all) {}

你只會引進來自Bootstrap的navbar相關樣式

 

7.2 inline

  • 使用 @import(inline) 包含外部文件,但不處理它們

發布v1.5.0

例子: 

@import (inline) "not-less-compatible.css";

 

當CSS文件可能不那么兼容時,您可以使用inline ;這是因為雖然Less支持大多數已知的標准CSS,但它不支持某些地方的注釋,不支持所有已知的CSS hacks,而不修改CSS。 因此,您可以使用該文件將文件包含在輸出中,這樣所有的CSS都將在一個文件中。

 

7.3 less

  • 使用@ import(less)來處理導入的文件,而不考慮文件擴展名。
@import (less) "foo.css";

 

7.4 css

  • 使用@ import(css)將導入的文件視為常規的css,而不考慮文件擴展名。這意味着import語句將被保留原樣。
@import (css) "foo.less";

 

輸出:

@import "foo.less";

 

7.5 once

  • @ import語句的默認行為。這意味着該文件只導入一次,而該文件的后續導入語句將被忽略。
@import (once) "foo.less";
@import (once) "foo.less"; // 這條語句會被忽略

 

7.6 multiple

  • 使用@ import(多個)允許導入具有相同名稱的多個文件。這是和 once 相反的行為。

 


免責聲明!

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



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