1. 程式人生 > >sass語法一(變量篇)

sass語法一(變量篇)

開頭 忽略 1.5 背景色 var pan nts 不同 str

文件後綴名


sass有兩種後綴名的文件:一種後綴名為sass,不使用大括號和分號;另一種是我們這裏使用的scss文件,這種和我們平時使用的css文件格式差不多,使用大括號和分號。

//後綴名為sass的文件
body
    background: #eee
    font-size: 14px

//後綴名為scss的文件
body {
    background: #eee;
    font-size: 14px;
}

導入


sass的導入(@import)的規則和css不同,[email protected],只生成一種css文件,[email protected]

/* */;例如: @import ‘reset.css‘ ,那效果就和普通css導入一樣,導入的css文件不會合並到編譯後的文件中,而是以 @import 方式存在;

所有的scss導入文件都可以忽略後綴名 .scss 。一般來說基礎的文件命名方式都是以下劃線_開頭,如 _mixin.scss 。這種文件在導入的時候可以不寫下劃線,可寫成 @import ‘mixin‘;

被導入的scss文件 a.scss

//_a.scss

body {
    background: #eee;
}

需要導入樣式的scss文件 b.scss

@import ‘reset.css‘; //導入reset.css
@imort ‘a‘;//導入a.scss文件

p 
{ background: #ccc; }

編譯出來的b.css樣式:

@import ‘reset.css‘;
body {
    background: #eee;
}
p {
    background: #ccc;
}

根據上面的代碼可以看出,b.scss編譯後,a.scss直接合並到了編譯文件中,[email protected]

註釋


sass有兩種註釋方法,一種是標準的css註釋方式 /**/,另一種是//雙斜杠形式的單行註釋,不過這種單行註釋不會被編譯出來

標準的css註釋

/*
*我是css標準註釋
*設置p標簽背景色
*/

p {
    background
: #ccc; }

雙斜杠單行註釋

//我是單行註釋
//設置p標簽背景色
p {
    background: #ccc;
}

變量


sass的變量必須以$開頭,後面緊跟變量名,而變量值與變量名之間以冒號“:”隔開(就像設置css屬性一樣),如果值後面加上!default 則表示默認值;

普通變量

定義之後可以在全局使用它

//sass style

$font-base: 14px;

p {
    font-size: $font-base;
}

//css style

p {
    font-size: 14px;
}

默認變量

sass的默認變量只需要在值後面加上 !default 即可

// sass style

$base-lineHeight: 1.5 !default;
body {
    line-height: $base-lineHeight;
}

//css style

body {
    line-height: 1.5;
}

sass的默認變量一般是用來設置默認值,然後根據需求來覆蓋的,覆蓋的方式也很簡單,只需要重新定義一下就可以了

//sass style
/*
*覆蓋的順序沒有限制,可以在默認變量的後面也可以在前面
*/

$base-lineHeight: 1.5 !default;
$base-lineHeight: 2;
body {
    line-height: $base-lineHeight; 
}

//css style

body {
    line-height: 2;
}

可以看出編譯完成的 line-height: 2; 而不是 line-height: 1.5; 。默認變量的價值在組件化開發的時候非常有用。

特殊變量

一般我們定義的變量都是屬性值,可直接使用,但是如果變量作為屬性的時候,我們就不能像之前那樣使用了,比需要 #{$variable} 的形式使用

//sass style

$border-direction: top !default;
$base-fontSize: 14px !default;
$base-lineHeight: 1.5 !default;

//應用class和屬性
.border-#{$border-direction} {
    border-#{$border-direction}: 1px solid #ccc;  
}
//應用復雜的屬性
body {
    font: #{$base-fontSize}/#{$base-lineHeight};
}
//css style

.border-top {
    border-top: 1px solid #ccc;
}
body {
    font: 14px/1.5;
}

局部變量

sass在3.4版本之前沒有類似於局部變量,但是在3.4版本之後就出現了局部變量,類似於函數的定義方式,在大括號之外的變量為全局變量(設置了 !global 變量的例外,一會兒提到),在大括號之內的變量只會作用於大括號範圍內的變量;

//sass style
$base-fontSize: 12px;
p {
    $base-fontSize: 14px;
    font-size: $base-fontSize;
}
body {
    font-size: $base-fontSize;
}

//css style
p {
    font-size: 14px;
}
body {
    font-size: 12px;
}

由於在p標簽聲明的變量是局部變量,所以影響不到外面的變量,body標簽的字體大小還是12px;

全局變量

全局變量相對於局部變量,聲明變量的位置在大括號外面,或者在大括號內使用了 !global 也會成為全局變量;

//sass style
$base-fontSize: 12px;
p {
    $base-fontSize: 14px !global;
    font-size: $base-fontSize;
}
body {
    font-size: $base-fontSize;
}

//css style
p {
    font-size: 14px;
}
body {
    font-size: 14px;
}

sass語法一(變量篇)