Sass 入門

Sass 入門

Sass 是一款強(qiáng)化 CSS 的輔助工具犹菱,它在 CSS 語(yǔ)法的基礎(chǔ)上增加了變量 (variables)、嵌套 (nested rules)吮炕、混合 (mixins)腊脱、導(dǎo)入 (inline imports) 等高級(jí)功能,這些拓展令 CSS 更加強(qiáng)大與優(yōu)雅龙亲。使用 Sass 以及 Sass 的樣式庫(kù)(如 Compass)有助于更好地組織管理樣式文件陕凹,以及更高效地開發(fā)項(xiàng)目。

Sass和Scss的區(qū)別

Sass 和 SCSS 其實(shí)是同一種東西鳄炉,我們平時(shí)都稱之為 Sass杜耙,兩者之間不同之處有以下兩點(diǎn):

文件擴(kuò)展名不同,Sass 是以“.sass”后綴為擴(kuò)展名拂盯,而 SCSS 是以“.scss”后綴為擴(kuò)展名
語(yǔ)法書寫方式不同佑女,Sass 是以嚴(yán)格的縮進(jìn)式語(yǔ)法規(guī)則來(lái)書寫,不帶大括號(hào)({})和分號(hào)(;),而 SCSS 的語(yǔ)法書寫和我們的 CSS 語(yǔ)法書寫方式非常類似团驱。

Sass 語(yǔ)法

$font-stack: Helvetica, sans-serif  //定義變量
$primary-color: #333 //定義變量

body
  font: 100% $font-stack
  color: $primary-color

SCSS 語(yǔ)法

$font-stack: Helvetica, sans-serif;
$primary-color: #333;

body {
  font: 100% $font-stack;
  color: $primary-color;
}

Sass的輸出方式

  • 嵌套輸出方式 nested
  • 展開輸出方式 expanded
  • 緊湊輸出方式 compact
  • 壓縮輸出方式 compressed

sass

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

nested

nav ul {
  margin: 0;
  padding: 0;
  list-style: none; }
nav li {
  display: inline-block; }
nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none; }

expanded

大括號(hào)另起一行

nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
nav li {
  display: inline-block;
}
nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none;
}

compact

單行css

nav ul { margin: 0; padding: 0; list-style: none; }
nav li { display: inline-block; }
nav a { display: block; padding: 6px 12px; text-decoration: none; }

compressed

壓縮css

nav ul{margin:0;padding:0;list-style:none}nav li{display:inline-block}nav a{display:block;padding:6px 12px;text-decoration:none}

sass聲明變量

sass 的默認(rèn)變量?jī)H需要在值后面加上 !default 即可摸吠。
設(shè)置默認(rèn)值主要是用來(lái)覆蓋的

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

最后結(jié)果為2

在組件開發(fā)中我們會(huì)經(jīng)常用到default
例如

$grey-1: #ffffff !default;
$grey-2: #fafafa !default;
$grey-3: #f5f5f5 !default;
$grey-4: #e8e8e8 !default;
$grey-5: #d9d9d9 !default;
$grey-6: #bfbfbf !default;
$grey-7: #8c8c8c !default;
$grey-8: #595959 !default;
$grey-9: #262626 !default;
$grey-10: #000000 !default;

局部變量與全局變量

在外部的為全局變量
//SCSS

$color: orange !default;//定義全局變量(在選擇器、函數(shù)嚎花、混合宏...的外面定義的變量為全局變量)
.block {
  color: $color;//調(diào)用全局變量
}
em {
  $color: red;//定義局部變量
  a {
    color: $color;//調(diào)用局部變量
  }
}
span {
  color: $color;//調(diào)用全局變量
}
//CSS
.block {
  color: orange;
}
em a {
  color: red;
}
span {
  color: orange;
}

選擇器嵌套

//HTML
<header>
<nav>
    <a href=“##”>Home</a>
    <a href=“##”>About</a>
    <a href=“##”>Blog</a>
</nav>
<header>

想選中 header 中的 a 標(biāo)簽寸痢,在寫 CSS 會(huì)這樣寫:

//CSS
nav a {
  color:red;
}

header nav a {
  color:green;
}

那么在 Sass 中,就可以使用選擇器的嵌套來(lái)實(shí)現(xiàn):

//Scss
nav {
  a {
    color: red;

    header & {
      color:green;
    }
  }  
}

& 代表父選擇器

屬性嵌套

屬性嵌套就是方便省略前綴

// Css
.box {
    border-top: 1px solid red;
    border-bottom: 1px solid green;
}
//Scss
.box {
    border {
        top: 1px solid red;
        bottom: 1px solid green;
    }
}

偽類嵌套

偽類嵌套與屬性類似

// Css
.box:before{
    content:"偽元素嵌套";
}
//Scss
.box{
  &: before {
    content:"偽元素嵌套";
  }
}

混合宏

混合宏適用于復(fù)雜的樣式
@mixin 在調(diào)用中要用@include

@mixin border-radius{
    -webkit-border-radius: 3px;
    border-radius: 3px;
}

button {
    @include border-radius;
}

混合宏還可以傳參

不帶參數(shù)值
@mixin border-radius($radius){
  -webkit-border-radius: $radius;
  border-radius: $radius;
}

.box {
  @include border-radius(3px);
}

帶參數(shù)值

帶參數(shù)值可以設(shè)為默認(rèn)值

@mixin border-radius($radius:3px){
  -webkit-border-radius: $radius;
  border-radius: $radius;
}

同時(shí)可以被覆蓋

.box {
  @include border-radius(50%);
}

繼承

使用@extend

//SCSS
.btn {
  border: 1px solid #ccc;
  padding: 6px 10px;
  font-size: 14px;
}

.btn-primary {
  background-color: #f36;
  color: #fff;
  @extend .btn;
}

.btn-second {
  background-color: orange;
  color: #fff;
  @extend .btn;
}

編譯出來(lái)后

//CSS
.btn, .btn-primary, .btn-second {
  border: 1px solid #ccc;
  padding: 6px 10px;
  font-size: 14px;
}

.btn-primary {
  background-color: #f36;
  color: #fff;
}

.btn-second {
  background-clor: orange;
  color: #fff;
}

占位符%placeholder

%placeholder 聲明的代碼紊选,如果不被 @extend 調(diào)用的話啼止,不會(huì)產(chǎn)生任何代碼。

// SCSS
%mt5 {
  margin-top: 5px;
}
%pt5{
  padding-top: 5px;
}

.btn {
  @extend %mt5;
  @extend %pt5;
}

.block {
  @extend %mt5;

  span {
    @extend %pt5;
  }
}

混合宏 占位符 繼承對(duì)比

混合宏更適用于有參數(shù)的傳遞兵罢,沒有參數(shù)額話不推薦因?yàn)闀?huì)讓代碼冗余

占位符的話非常推薦因?yàn)橛谜嘉环x的變量如果沒有用extend調(diào)用不會(huì)生成css献烦,非常好

如果你的代碼塊不需要專任何變量參數(shù),而且有一個(gè)基類已在文件中存在趣些,那么建議使用 Sass 的繼承。

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贰您,一起剝皮案震驚了整個(gè)濱河市坏平,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锦亦,老刑警劉巖舶替,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異杠园,居然都是意外死亡顾瞪,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門抛蚁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陈醒,“玉大人,你說(shuō)我怎么就攤上這事瞧甩《危” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵肚逸,是天一觀的道長(zhǎng)爷辙。 經(jīng)常有香客問我,道長(zhǎng)朦促,這世上最難降的妖魔是什么膝晾? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮务冕,結(jié)果婚禮上血当,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好歹颓,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布坯屿。 她就那樣靜靜地躺著,像睡著了一般巍扛。 火紅的嫁衣襯著肌膚如雪领跛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天撤奸,我揣著相機(jī)與錄音吠昭,去河邊找鬼。 笑死胧瓜,一個(gè)胖子當(dāng)著我的面吹牛矢棚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播府喳,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼蒲肋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了钝满?” 一聲冷哼從身側(cè)響起兜粘,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弯蚜,沒想到半個(gè)月后孔轴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碎捺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年路鹰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片收厨。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晋柱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诵叁,到底是詐尸還是另有隱情趣斤,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布黎休,位于F島的核電站浓领,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏势腮。R本人自食惡果不足惜联贩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捎拯。 院中可真熱鬧泪幌,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至没隘,卻和暖如春懂扼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背右蒲。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工阀湿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人瑰妄。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓陷嘴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親间坐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子灾挨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 離家出走那天, 是你遺棄了我竹宋, 然后我們相互討厭劳澄, 這矛盾不可轉(zhuǎn)變。 我看透了你眼底的幽怨逝撬, 你看透了我內(nèi)心的喜歡...
    娑喬閱讀 200評(píng)論 0 1
  • 1浴骂、 哥哥有了兩個(gè)很可愛的孩子乓土,都是男孩宪潮,胖胖的,看起來(lái)讓人忍不住想要捏他們?nèi)馊獾哪橆a趣苏。哥哥有家了狡相,有了妻子...
    庸人自話閱讀 159評(píng)論 0 2
  • 以前尽棕,我沒有感受到孤獨(dú)。 我身邊有很多朋友彬伦,今天可以約這個(gè)朋友吃飯滔悉,明天約那個(gè)朋友看電影,后天約另一個(gè)朋友跑步单绑。回官。...
    特立獨(dú)行的蟲子閱讀 239評(píng)論 0 0
  • 今天晚上老師布置的作業(yè)很少,可能是讓孩子們好好休息搂橙,備戰(zhàn)明天的運(yùn)動(dòng)會(huì)吧歉提!晚飯后收拾書包,裝了吃的,喝的苔巨,還有...
    李烽熠媽閱讀 141評(píng)論 0 0