SCSS初探-1

安裝parcel

  1. 打開(kāi)目標(biāo)文件夾(文件夾里面有一個(gè) xx.html文件 與一個(gè) yyy.scss)
cd scss-demo
  1. npm 快速初始化(可以跳過(guò)一些基礎(chǔ)設(shè)置)
npm init -y
  1. 在目標(biāo)文件中安裝parcel
npm i -D parcel
  1. parcel編譯目標(biāo)文件(這個(gè)過(guò)程中會(huì)安裝Node Sass)拷泽,把.scss轉(zhuǎn)化成.css
npx parcel index.html

SCSS的常用功能

嵌套選擇器

??如下

<style>
.box {
  border: 2px solid grey;
}
.box > ul {
  background-color: pink;
}
.box > ul > li {
  color: greenyellow;
  border: 2px solid blue;
}
</style>
<div class="box">
  <ul>
    <li>First</li>
    <li>Second</li>
    <li>Thrid</li>
  </ul>
</div>

上例中的CSS可以使用SCSS嵌套恩沽,如下demo
??SCSS基礎(chǔ)用法①-嵌套

.box {
  border: 2px solid grey;
  > ul {
    background-color: pink;
    > li {
      border: 2px solid blue;
      color: grey;
    }
  }
}

變量 $variable

任何值都可以作為變量砸狞。且變量可以作為另一個(gè)變量的值(如??的變量$grey作為變量$gray的值)荒勇,這樣就使兩個(gè)變量其實(shí)代表的是一個(gè)值荷逞。還有一點(diǎn)好處是使用SCSS變量可以批量修改樣式醉旦,如果下面的.boxli的邊框的大小都要變成3px藏古,這時(shí)候就可以直接把 $border-width: 3px即可吧碾,而不需要逐逐項(xiàng)去修改

??SCSS基礎(chǔ)用法②-變量

$grey: #666;
$gray: $grey;
$border-width: 2px;

.box {
  border: $border-width solid $grey;
  > ul {
    background-color: pink;
    > li {
      border: $border-width solid blue;
      color: $gray;
    }
  }
}

@mixin

@mixin模式中結(jié)合@include只是把代碼機(jī)械的拷貝過(guò)來(lái)俺孙,總體上代碼的量并不會(huì)減少(只是減少你重復(fù)書(shū)寫(xiě)代碼辣卒,但是打開(kāi)控制臺(tái)代 .scss文件編譯生成的 css代碼并沒(méi)有減少)。

demo??SCSS基礎(chǔ)用法③mixin 基本使用睛榄、參數(shù)荣茫、默認(rèn)參數(shù)

  • mixin 最基本的用法
@mixin test {
  border: 3px solid red;
}
.box {
  @include test
}
/* box 對(duì)應(yīng)的 border樣式就是 @mixin test中被{} 包裹起來(lái)的樣式,當(dāng)然也可以是多個(gè)樣式 */
  • mixin 參數(shù)模式(mixin的參數(shù)模式也可以支持 設(shè)定默認(rèn)的參數(shù))
    ??
<div class="box1">
  <ul>
    <li>one</li>
    <li>two</li>
    <li>three</li>
  </ul>
</div>

SCSS參數(shù)模式场靴,以及默認(rèn)參數(shù) 下面的 greenyellow#999就是設(shè)定的參數(shù)的默認(rèn)值

@mixin test1($color: greenyellow, $bgc: #999)   {
  border: 2px solid $color; 
  background-color: $bgc;
}
.box1 {
  @include test1(green);
  > ul {
    @include test1(greenyellow,pink)
  }
}

占位符選擇器%foo(Placeholder Selectors: %foo) 與 @extend

SCSS基礎(chǔ)使用-placeholder selector %sele-20200610.png

達(dá)成上面的圖片效果的CSS

.box > div {
  background-color: #ccc;
    width: 300px;
    height: 120px;
    border-radius: 4px;
    box-shadow: 1.5px 1.5px 1px .8px rgba(0, 0, 0, .5)
}

如果在另外一個(gè)CSS 選擇器啡莉,也需要同樣的樣式,則需要把上面的樣式全部賦值過(guò)去粘貼旨剥,這無(wú)疑是一件費(fèi)力不討好的事情咧欣。當(dāng)然我們機(jī)智的想到了使用SCSS mixin

??如下

<div class="box">
  <div></div>
</div>
<div class="box1">
  <div></div>
</div>

要使.box > div.box1 > div達(dá)到下圖的效果,則需要

SCSS基礎(chǔ)之mixin 與 placeholder-20200610.png

方法一:mixin
mixin 模式demoSCSS基礎(chǔ)用法④-1 mixin 與 placeholder的區(qū)別比較

SCSS編譯生成的CSS

SCSS基礎(chǔ)使用之placeholder與mixin的區(qū)別-2-20200610.png

方法二:placeholder selector
placeholder 模式demo SCSS基礎(chǔ)用法④-2 占位符選擇器 Placeholder Selector

%box-style {
    background-color: #ccc;
    width: 300px;
    height: 120px;
    border-radius: 4px;
    box-shadow: 1.5px 1.5px 1px .8px rgba(0, 0, 0, .5);
    margin-bottom: 20px;
}
.box > div {
    @extend %box-style;
}
.box1 > div {
    @extend %box-style;
}

SCSS編譯生成的CSS

SCSS基礎(chǔ)使用之placeholder與mixin的區(qū)別-1-20200610.png

從上面的mixinSCSS編譯的CSSplaceholder selectorSCSS編譯的CSS可以看出轨帜。對(duì)于同樣的樣式mixin實(shí)質(zhì)就是把樣式對(duì)應(yīng)的CSS全部拷貝到另一個(gè)CSS選擇器魄咕,如把div > box的樣式全部拷貝到div1 > box選擇器下面;而placeholder只是把設(shè)定同樣樣式的CSS選擇器拷貝到 對(duì)應(yīng)的CSS前面蚌父,如把box1 > div拷貝到box > div對(duì)應(yīng)的樣式前面


參考:
Sass: Sass Basics


版權(quán)聲明:本文為博主原創(chuàng)文章哮兰,未經(jīng)博主許可不得轉(zhuǎn)載

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市苟弛,隨后出現(xiàn)的幾起案子喝滞,更是在濱河造成了極大的恐慌,老刑警劉巖嗡午,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囤躁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)狸演,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)言蛇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宵距,你說(shuō)我怎么就攤上這事腊尚。” “怎么了满哪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵婿斥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我哨鸭,道長(zhǎng)民宿,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任像鸡,我火速辦了婚禮活鹰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘只估。我一直安慰自己志群,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布蛔钙。 她就那樣靜靜地躺著锌云,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吁脱。 梳的紋絲不亂的頭發(fā)上桑涎,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音豫喧,去河邊找鬼石洗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛紧显,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缕棵,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼孵班,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了招驴?” 一聲冷哼從身側(cè)響起篙程,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎别厘,沒(méi)想到半個(gè)月后虱饿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年氮发,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渴肉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爽冕,死狀恐怖仇祭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颈畸,我是刑警寧澤乌奇,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站眯娱,受9級(jí)特大地震影響礁苗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜徙缴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一寂屏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧娜搂,春花似錦迁霎、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至携御,卻和暖如春昌粤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背啄刹。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工涮坐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人誓军。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓袱讹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親昵时。 傳聞我的和親對(duì)象是個(gè)殘疾皇子捷雕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355