@import

Sass 支持所有CSS3 的@ 規則, 以及一些Sass 專屬的規則,也被稱為“指令(directives)”。這些規則在Sass 中具有不同的功效,詳細解釋如下。

@import

Sass 擴展了CSS 的@import 規則,讓它能夠引入SCSS 和Sass 文件。所有引入的SCSS 和Sass 文件都會被合併並輸出一個單一的CSS 文件。另外,被導入的文件中所定義的變量或mixins 都可以在主文件中使用。

Sass 會在當前目錄下尋找其他Sass 文件, 如果是Rack、Rails 或Merb 環境中則是Sass 文件目錄。也可以通過:load_paths 選項或者在命令行中使用--load-path 選項來指定額外的搜索目錄。

@import 根據文件名引入。默認情況下,它會尋找Sass 文件並直接引入, 但是,在少數幾種情況下,它會被編譯成CSS 的@import 規則:

  • 如果文件的擴展名是.css。
  • 如果文件名以http:// 開頭。
  • 如果文件名是url()。
  • 如果@import 包含了任何媒體查詢(media queries)。

如果上述情況都沒有出現,並且擴展名是.scss 或.sass, 該名稱的Sass 或SCSS 文件就會被引入。如果沒有擴展名, Sass 將試著找出具有.scss 或.sass 擴展名的同名文件並將其引入。

例如:

@import "foo.scss";

@import "foo";

兩者都將引入foo.scss 文件, 而

@import "foo.css";
@import "foo" screen;
@import "http://foo.com/bar";
@import url(foo);

將被編譯為:

@import "foo.css";
@import "foo" screen;
@import "http://foo.com/bar";
@import url(foo);

也可以通過一個@import 引入多個文件。例如:

@import "rounded-corners", "text-shadow";

將引入rounded-corners 和text-shadow 兩個文件。

如果你有一個SCSS 或Sass 文件需要引入, 但是你又不希望它被編譯為一個CSS 文件, 這時,你就可以在文件名前面加一個下劃線,就能避免被編譯。這將告訴Sass 不要把它編譯成CSS 文件。然後,你就可以像往常一樣引入這個文件了,而且還可以省略掉文件名前面的下劃線。

例如,你有一個文件叫做_colors.scss。這樣就不會生成_colors.css 文件了, 而且你還可以這樣做:

@import "colors";//不用加下劃線

來引入_colors.scss 文件。

注意,在同一個目錄不能同時存在帶下劃線和不帶下劃線的同名文件。例如,_colors.scss不能與colors.scss並存。

嵌套@import

雖然大部分時間只需在頂層文件使用@import 就行了, 但是,你還可以把他們包含在CSS 規則和@media 規則中。

來看官網提供的一個簡單示例:

假設要引入的樣式文件`example.scss`文件中包含這樣的代碼:

.example {
  color: red;
}

然後這樣引用:

#main {
  @import "example";
}

編譯出來的CSS:

#main .example {
  color: red;
}

results matching ""

    No results matching ""