Share This Post

什麼是CSS 預處理器?

CSS是用來撰寫網頁樣式的語言,但隨著網頁開發複雜度提高,尤其是大型專案,在開發時也面臨許多問題:

  • 全域樣式會互相干擾,不易進行 debug,可維護性差
  • 重複撰寫相同樣式,程式碼不易閱讀

為了解決這些問題,CSS 預處理器(CSS Preprocessor)就誕生了!作為 CSS 語法的擴充,用以改善程式碼的結構與可維護性。

簡單看一下css與scss的差異

scss:

.nav {
  background: #eee;
  li {
    display: inline-block;
  }
}

css:

.nav {
  background: #eee;
}
.nav li {
  display: inline-block;
}

scss基本語法

巢狀(Nesting)

透過巢狀式的結構也可以清楚的知道元素上下層的關聯性。

scss:
.box{
  width: 100%;
  margin: 0 auto;
  .title{
    padding: 10px;
    p{
      color: rgba(255, 0, 0, 1);;
    }
  }
}


編譯成css:
.box{
  width: 100%;
  margin: 0 auto;
}
.box .title{
  padding: 10px;
}
.box .title p{
  color: rgba(255, 0, 0, 1);;
}

變數(Variables)

可以用$來表示變數,變數可以用來儲存值,方便重複利用

scss:
$box-shadow: 10px 10px 5px rgba(0, 0, 0, 1);

.box{
  box-shadow: $box-shadow;
}

編譯成css:
.box{
  box-shadow: 10px 10px 5px rgba(0, 0, 0, 1);
}

混入(Mixins)

將經常被重複使用的程式碼獨立撰寫,以 @mixin 語法包裝起來,需要時透過 @include 引用,即可根據不同參數來設定相似的樣式。

scss:
@mixin css3-border-radius() { 
  -ms-border-radius: 5px;
  -moz-border-radius: 5px; 
  -webkit-border-radius: 5px; 
  -o-border-radius: 5px; 
  border-radius: 5px; 
}
.box {
@include css3-border-radius();
}


編譯成css:
.box {
  -ms-border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  border-radius: 5px;
}

匯入(Import)

在檔案中加入其他SCSS或CSS檔案,最後編譯時會一併編譯。

@import "head.scss";
@import "main.scss";
@import "footer.scss";

繼承(Extend)

當許多選擇器具有相同樣式時,可透過% 佔位符號宣告,將所有相同樣式內容合併,在以 @extend 來引入使用。

scss:
%box {
  border: 1px solid rgba(0, 0, 0, 1);
  padding: 10px;
  color: rgba(0, 0, 0, 1);
}

.success {
  @extend %box;
  border-color: rbga(0, 128, 0, 1);
}

.danger {
  @extend %box;
  border-color: rgba(255, 0, 0, 1);
}


編譯成css:
.success, .danger{
  border: 1px solid black;
  padding: 10px;
  color: black;
}

.success{
  border-color: rgba(0, 128, 0, 1);
}

.danger{
  border-color: rgba(255, 0, 0, 1);
}

訂閱研究文章

Get updates and learn from the best

More To Explore

Scroll to Top

hurry up !

軟體工程師培訓

限時免費報名中

藉由與「真實世界軟體專案」相同的技術、工具與開發流程,化簡成與商業機密無關、門檻較低更容易上手的「模擬專案」,讓你有機會在職場前輩的陪伴下,完成真槍實彈的練習,動手解決真實的問題,快速累積個人的經驗與作品,而不只是「學習技術」而已。